【发布时间】:2016-07-28 05:58:44
【问题描述】:
当我的设备处于纵向或横向模式时,如何仅旋转按钮?我知道这样的事情:
button.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))
但是我必须在我的代码中哪里调用它?
我不想将我的设备设置为横向模式,我只想在应该处于横向模式时旋转图标。
提前致谢!
【问题讨论】:
标签: ios swift rotation device-orientation
当我的设备处于纵向或横向模式时,如何仅旋转按钮?我知道这样的事情:
button.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))
但是我必须在我的代码中哪里调用它?
我不想将我的设备设置为横向模式,我只想在应该处于横向模式时旋转图标。
提前致谢!
【问题讨论】:
标签: ios swift rotation device-orientation
你应该重写 func
viewWillTransitionToSize(_ size: CGSize, withTransitionCoordinator coordinator:UIViewControllerTransitionCoordinator)
并在那里调用变换
旋转回来时不要忘记分配CGAffineTransformIdentity
【讨论】:
最好的方法是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
}
}
这个解决方案很简单,真的很容易做到。
【讨论】:
我猜你已经知道如何“旋转”按钮了,所以我只告诉你如何知道设备已经旋转。
在视图控制器中,覆盖 willRotateToInterfaceOrientation:
override func willRotateToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) {
}
在方法体中,您可以检查toInterfaceOrientation 的值以了解设备旋转到哪个方向。例如:
switch toInterfaceOrientation {
case Portrait:
// some code here...
default:
break
}
【讨论】: