2016-03-22 2 views
2

Я создал очень простое приложение, которое ограничивало, в каком направлении вы можете повернуть iPhone. В ViewController я переопределить метод supportedInterfaceOrientations следующим образом:Где свойство rawValue?

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 

    return UIInterfaceOrientationMask(rawValue: (UIInterfaceOrientationMask.Portrait.rawValue | UIInterfaceOrientationMask.LandscapeLeft.rawValue)) 

} 

И когда я смотрю на реализацию UIInterfaceOrientationMask:

public struct UIInterfaceOrientationMask : OptionSetType { 
    public init(rawValue: UInt) 

    public static var Portrait: UIInterfaceOrientationMask { get } 
    public static var LandscapeLeft: UIInterfaceOrientationMask { get } 
    public static var LandscapeRight: UIInterfaceOrientationMask { get } 
    public static var PortraitUpsideDown: UIInterfaceOrientationMask { get } 
    public static var Landscape: UIInterfaceOrientationMask { get } 
    public static var All: UIInterfaceOrientationMask { get } 
    public static var AllButUpsideDown: UIInterfaceOrientationMask { get } 
} 

Я не могу найти свойство rawValue на, например Portrait собственности. Откуда приходит rawValue?

ответ

1

Просто вернуть это:

return [UIInterfaceOrientationMask.Portrait, UIInterfaceOrientationMask.LandscapeLeft] 

Там нет смысла в том, необработанное значение просто преобразовать его обратно в исходное значение! :)

+0

Возможно, мне что-то не хватает, но вам не нужно возвращать что-то типа 'UIInterfaceOrientationMask', а не' [UIInterfaceOrientationMask] '? –

+0

Вы возвращаете что-то типа UIInterfaceOrientationMask. Магия обрабатывается OptionSetType, который является ArrayLiteralConvertible. При преобразовании литерала массива он рассматривает элементы как набор и объединяет их в правильное значение соответствующего типа. Google OptionSetType и прочитайте несколько руководств, доступных в сети. –

Смежные вопросы