Универсальный раскадровка?

В старом мире разработки XIB для iOS я смог создать один View Controller и один XIB и использовать их как для iPhone, так и для iPad. С помощью всего лишь нескольких настроек кода XIB будет изменять размеры и корректировать их в соответствии с различными размерами и пропорциями. Это позволило мне снизить риск несогласованности двух макетов с течением времени.

Возможно ли то же самое в мире раскадровок? По умолчанию Xcode создает две разные раскадровки для моего приложения Universal - одну для iPhone и одну для iPad.

Как я могу использовать одну раскадровку для обоих?

Спасибо!

Обновлено:

Классы размера в Xcode 6 по существу достигнут цели универсальных раскадровок. Больше информации здесь:

https://developer.apple.com/library/prerelease/ios/documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_6_0.html

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

Другие вопросы по тегам