设备方向在swift中更改时如何旋转按钮?

时间:2016-07-28 05:58:45

标签: ios swift rotation device-orientation

当我的设备处于纵向或横向模式时,如何旋转按钮?我知道这样的事情:

button.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))

但是我必须在我的代码中调用它? 我不想将我的设备设置为横向模式,我只想在横向模式下旋转图标 提前谢谢!

3 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是viewDidLoad在下面添加以下代码行:

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(rotate), name: UIDeviceOrientationDidChangeNotification, object: nil)

然后在函数旋转中,在设备方向的情况下做一些像这样的代码:

func rotate(){
    if UIDeviceOrientationIsLandscape(UIDevice.currentDevice().orientation) {
    //your code here in landscape mode
    }
if UIDeviceOrientationIsPortrait(UIDevice.currentDevice().orientation){
    //your code in portrait mode
    }
}

这个解决方案简单易行。

答案 1 :(得分:0)

你应该覆盖func

viewWillTransitionToSize(_ size: CGSize, withTransitionCoordinator coordinator:UIViewControllerTransitionCoordinator)

并在那里调用转换

旋转后不要忘记指定CGAffineTransformIdentity

有关轮换的更多信息:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIContentContainer_Ref/index.html#//apple_ref/occ/intfm/UIContentContainer/viewWillTransitionToSize:withTransitionCoordinator

答案 2 :(得分:0)

我想你知道如何"旋转"按钮已经,所以我只是告诉你如何知道设备已经旋转。

在视图控制器中,覆盖willRotateToInterfaceOrientation

override func willRotateToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) {

}

在方法正文中,您可以检查toInterfaceOrientation的值以了解设备正在旋转的方向。例如:

switch toInterfaceOrientation {
    case Portrait:
        // some code here...
    default:
        break
}