Сцена SpriteKit некорректно отображается на iPad после переключения на универсальное приложение

#ios #objective-c #xcode #ipad #sprite-kit

#iOS #objective-c #xcode #iPad #sprite-kit

Вопрос:

Итак, моя игра SpriteKit хорошо отображалась как на iPhone, так и на iPad, но я заметил, что на iPad отображается строка состояния. Я пошел и проверил, что я правильно настроил строку состояния на неправильное отображение. После небольшого поиска я нашел сообщение, в котором упоминалось, что в iOS7.1 строка состояния будет отображаться на iPad, если вы не настроили ее как универсальное приложение. Конечно же, я по ошибке установил свой проект как приложение для iPhone. Я переключил ее на universal (а также решил не создавать отдельную раскадровку для iPad). После этого разрешение моей сцены не отображалось корректно на iPad. Приложение теперь выглядит намного больше и исчезает с экрана. Предполагается, что мой основной спрайт должен следовать за движением моего пальца, но теперь он находится далеко справа от того места, где я провожу пальцем. Не уверен, что было сделано, когда я переключил его на Universal, но переключение его обратно сейчас не устраняет проблему. Он по-прежнему отлично отображается на всех iPhone, но больше не на iPad. Кто-нибудь еще сталкивался с этой проблемой>

Ответ №1:

В методе viewDidLoad вашего контроллера просмотра измените scene.scaleMode = SKSceneScaleModeAspectFill; на scene.scaleMode = SKSceneScaleModeResizeFill;

или

Добавьте эти строки в свой файл info.plist

 Main storyboard file base name (iPhone)  yourStoryboard

Main storyboard file base name (iPad)    yourStoryboard
 

Удачи

Комментарии:

1. Просто попробовал, никакого эффекта. Я провел некоторое сравнение файлов, чтобы увидеть, что на самом деле изменилось, и в моем файле project.pbxproj есть несколько записей, которые были сделаны при установке универсального параметра, все они TARGETED_DEVICE_FAMILY = «1,2»; Если я удалю все эти записи, он снова будет нормально работать на iPad, но цель проектаВ настройках развертывания теперь указано iPhone, а строка состояния вернулась на iPad. Очень странно, что это работает для iPad, пока я не хочу сказать, что оно должно быть универсальным.

2. Добавление двух записей в мой файл plist не имело никакого эффекта, что, я думаю, имеет смысл, потому что приложение все еще работает, поэтому раньше оно ссылалось на раскадровку, но теперь оно просто неправильно масштабируется на iPad. Не идеальное решение, но если бы я оставил его в качестве приложения для iPhone, можно ли его по-прежнему развернуть на iPad в App Store?

3. Что, если изменить размер контроллера представления на произвольную форму?

Ответ №2:

Хорошо, итак, мне удалось решить проблему, с которой я столкнулся. Похоже, что, поскольку я изначально работал на iPad в режиме iPhone, пользовательский интерфейс сделал некоторые предположения, которые были неверными для устройства, затем я внес некоторые изменения в свой код, чтобы компенсировать это. Когда я переключился обратно в универсальный режим, который из-за моих «настроек» вышел из строя. У меня был режим масштабирования как SKSceneScaleModeAspectFit, и он все еще есть, и я считаю, что он слегка обрезал мои левую и правую стороны на iPad (они были черными) во время работы в режиме iPhone, и я не мог понять, почему я не могу заполнить эти черные пробелы. Теперь, когда я отменил свои настройки и использую универсальный режим, все отображается правильно.