Ответ 1
Как и в Swift 2.0, маскирование бит заменяется массивами значений маски, теперь ваш код должен читать:
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return [.Portrait, .PortraitUpsideDown]
}
Я просто перенес проект в Swift 2.0, и этот ранее рабочий код вызывает ошибку:
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return Int(UIInterfaceOrientationMask.PortraitUpsideDown.rawValue) | Int(UIInterfaceOrientationMask.Portrait.rawValue)
}
Ошибка указывает, что типы возвращаемых данных неверны, но я попробовал несколько способов вернуть это без везения.
Невозможно преобразовать возвращаемое выражение типа 'Int' для возврата типа 'UIInterfaceOrientationMask'
Как и в Swift 2.0, маскирование бит заменяется массивами значений маски, теперь ваш код должен читать:
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return [.Portrait, .PortraitUpsideDown]
}
Существует обновление поддержкиInterfaceOrientations для Swift 3.0:
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.portrait
}
И функция авторотизации:
override var shouldAutorotate: Bool {
return true
}
Ответ Дэнни Браво правильный, но я хотел указать еще одну вещь. Начиная с Swift 2.0, UIInterfaceOrientationMask
(и большинство других типов битмаски) соответствуют OptionSetType
, который соответствует AlgebraSetType
, что означает, что вы можете выполнять все виды операций с такими, как union
, intersect
и т.д.
Например, в Swift 1.2 код выглядит следующим образом:
override func supportedInterfaceOrientations() -> Int {
var orientations = UIInterfaceOrientationMask.Portrait
if FeatureManager.hasLandscape() {
orientations |= UIInterfaceOrientationMask.Landscape
}
return Int(orientations.rawValue)
}
... больше похоже на это в Swift 2.0:
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
var orientations = UIInterfaceOrientationMask.Portrait
if FeatureManager.hasLandscape() {
orientations.insert( UIInterfaceOrientationMask.Landscape )
}
return orientations
}