Универсальный раскадровка?
В старом мире разработки XIB для iOS я смог создать один View Controller и один XIB и использовать их как для iPhone, так и для iPad. С помощью всего лишь нескольких настроек кода XIB будет изменять размеры и корректировать их в соответствии с различными размерами и пропорциями. Это позволило мне снизить риск несогласованности двух макетов с течением времени.
Возможно ли то же самое в мире раскадровок? По умолчанию Xcode создает две разные раскадровки для моего приложения Universal - одну для iPhone и одну для iPad.
Как я могу использовать одну раскадровку для обоих?
Спасибо!
Обновлено:
Классы размера в Xcode 6 по существу достигнут цели универсальных раскадровок. Больше информации здесь:
2 ответа
Короче... ты не можешь.
В конце разработки iPhone я использую методику для создания раскадровки для iPad.
Вы должны найти раскадровку для iPhone и с помощью терминала вы можете скопировать его, дав ему название раскадровки для iPad, которое Xcode создал для вас. Удалите пустую старую раскадровку и откройте вновь скопированную, изменив атрибут targetRuntime на "iOS.CocoaTouch.iPad" вместо старого значения "iOS.CocoaTouch".
Откройте раскадровку iPad с XCode, все есть, но все еще нужно организовать и подключить к ViewController (включая проводку..). Это не идеально, но я обычно делаю это, чтобы сохранить некоторые подверженные ошибкам копии и вставки (а также несколько часов).
Если вы просто хотите настроить свое приложение для iPhone и доставить его на iPad, вы можете просто использовать iPhone Xib, и вы получите 2-кратный маленький кубик в правом углу.
Обновление в конце 2014 года (после бета-версии Xcode 6)
Xcode 6 теперь позволяет вам определять одну раскадровку и через концепцию классов размеров, чтобы она адаптировалась ко всем своим устройствам. Это решение немного сбивает с толку (особенно если вы знакомы с тем, как эта проблема решается в среде Android), но это что-то в правильном направлении, ИМХО.
Да, ты можешь. Вы можете просто выбрать ту же самую раскадровку в XCode под Общим / Информация о развертывании
У меня есть несколько приложений, которые имеют это. Они разделяют много контроллеров представления. Если вы используете размер произвольной формы, вы можете создать отдельный контроллер представления в раскадровке и два отдельных сегмента.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
[self performSegueWithIdentifier:@"Open VC" sender:sender];
} else {
[self performSegueWithIdentifier:@"Open VC iPad" sender:sender];
}
Единственным недостатком является то, что вы не можете использовать специальные элементы управления iPad прямо из раскадровки (всплывающее окно и т. Д.), Если вы не переключитесь на раскадровку iPad