Подтвердить что ты не робот

Могу ли я определить, является ли экран регулярным или компактным из кода на iOS 8?

iOS 8 представляет новые типы экранов, которые можно использовать в раскадровки и в Xibs, могу ли я обнаружить эти типы в коде? Если да, то как?

Здесь вы можете найти больше об этом https://developer.apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS8.html

4b9b3361

Ответ 1

Да, вы можете, UIViewControllers теперь имеют свойство traitCollection, которое имеет информацию от идиомы устройства, к текущим классам размера и т.д. Кроме того, вы можете реализовать метод func traitCollectionDidChange(previousTraitCollection: UITraitCollection), чтобы получать уведомления, когда класс размера ( или какой-либо признак) изменилось (например, когда пользователь поворачивает устройство на iphone). Свойства UITraitCollection, которые вы ищете, это horizontalSizeClass и verticalSizeClass. Здесь reference

Надеюсь, что поможет

Ответ 2

Со страницы, с которой вы связаны (выделено мной):

Класс UITraitCollection используется для описания набора признаков, назначенных объекту. В указателях указывается класс размера, масштаб отображения и идиома для определенного объекта. Классы, поддерживающие протокол UITraitEnvironment (например, UIViewController и UIView) имеют коллекцию признаков. Вы можете получить коллекцию объектов и выполнить действия, когда эти свойства меняются.

Как отмечено в ссылках, связанных с этим, вы можете реализовать метод traitCollectionDidChange в своем представлении или контроллере просмотра, чтобы узнать, когда размер класса.

Ответ 3

Вы также можете определить тип устройства и его ориентацию, используя расширение ниже:

extension UITraitCollection {

    var isIpad: Bool {
        return horizontalSizeClass == .regular && verticalSizeClass == .regular
    }

    var isIphoneLandscape: Bool {
        return verticalSizeClass == .compact
    }

    var isIphonePortrait: Bool {
        return horizontalSizeClass == .compact && verticalSizeClass == .regular
    }

    var isIphone: Bool {
        return isIphoneLandscape || isIphonePortrait
    }
}