检测旋转变化的最简单方法是什么?

时间:2015-07-19 22:28:57

标签: ios swift view

我正在编写一个图形应用程序 - 横向将内容定位在肖像的坐标系中。我的viewController检测方向变化的最简单方法是什么?

编辑我知道2014年9月有一个类似的问题,但解决方案似乎是特定于代码的 - 有人可以澄清检测轮换的最简单方法可能是什么? (代码解释也不错)

我尝试了实施,但继续获得预期的声明" NSNotificationCenter上的错误

(为了清楚起见,这里引用的解决方案:)

在" didFinishLaunchingWithOptions"中的AppDelegate.swift中:

`NSNotificationCenter.defaultCenter().addObserver(self, selector: "rotated", name: UIDeviceOrientationDidChangeNotification, object: nil)`
AppDelegate类中的

func rotated()
{
    if(UIDeviceOrientationIsLandscape(UIDevice.currentDevice().orientation))
    {            
        println("landscape")
    }
    if(UIDeviceOrientationIsPortrait(UIDevice.currentDevice().orientation))
    {
        println("Portrait")
    }
}

2 个答案:

答案 0 :(得分:0)

这是我发现对旋转作出反应的最简单的方式,对于大多数人来说这应该是一个简单的实现 - 被覆盖的函数被称为“视图的框架改变并且其子视图因此重新被调用布局“(信用:斯坦福CS193p幻灯片)

viewController中的

(将旋转的视图):

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()
    // code to handle rotation details
}

答案 1 :(得分:0)

此方法存在问题。如果您在主视图中添加了许多子视图,则会多次调用此函数。

我认为最好的方法是:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    // Your Processing
}

此外,您还有参数可以帮助您进行处理。