Я делаю приложение, в котором мне нужно показать один вид в ориентации portrait
и совершенно другой вид в landscape mode
(например, stocks app on iPhone
). Например, если бы я сделал приложение погоды, на портрете я хотел бы показать текущую погоду, а в пейзаже - график этой погоды. Как бы я это сделал, должен ли я сделать другой storyboard
и изменить класс размера?Как изменить вид в разных направлениях
ответ
Это называется адаптивной компоновкой. Посмотрите этот хороший учебник на Ray Wenderlich. https://www.raywenderlich.com/113768/adaptive-layout-tutorial-in-ios-9-getting-started
Адаптивная компоновка не обязательно будет ее отрезать. Моему приложению нужно было что-то похожее - и в iPad с использованием AutoLayout вы не знаете, используете ли вы классы размера. Вам нужно измерить ширину и высоту надзора.
Я был очень рад, когда Apple даже сделала то, что я сделал на WWDC 2016 («Создание приложений Adaptive, Part 2»). Они сбросили в код (IB, в то время как близко, не будет сокращать это 100%) с:
override func viewWillLayoutSubviews() {
super.viewDidLayoutSubviews()
if self.bounds.width = self.bounds.height {
// view is in landscape mode
} else {
// view is in portrait mode
}
}
Это ключ, что нужно сделать. Оттуда это зависит от ваших потребностей. Мои потребности были довольно простыми, переместите некоторые виды в нужную сторону, а не под изображение, если это пейзаж. Приложение Apple's Stock выглядит так, как будто оно также отключено от красных вещей, что легко сделать с помощью AutoLayout.
Я не пытаюсь изменить ограничения или перемещать объекты по экрану при изменении ориентации. В основном, что делать, это изменение полностью. Предположим, я создавал приложение для погоды, в портретной ориентации я хотел бы показать текущую погоду, и в ландшафте я хотел бы показать график. Как мне это сделать? @dfd – fellowProgrammer
Возможно, я вас не понимаю. В моих глазах прямо сейчас, это все та же концепция. «Смена вида полностью» подразумевает скрытие текущего представления и «скрытие» скрытого представления, которое либо перемещает объекты в виде надзора, либо - и я бы не рекомендовал этого - переключение между двумя видами (и контроллерами). – dfd
Хорошо, еще один вопрос: как сделать UIView размером с экран, поместить в него мои метки (programitacally), а затем скрыть это представление и показать другое. @dfd – fellowProgrammer
Возможный дубликат: http://stackoverflow.com/a/27643160/3400991 –
Возможный дубликат [Настройка ориентации устройства в Swift iOS] (http://stackoverflow.com/questions/25651969/setting-device-orientation- in-swift-ios) – Vinodh