【发布时间】:2016-07-26 12:44:04
【问题描述】:
【问题讨论】:
-
我不明白。如果您在情节提要中使用尺寸等级,这甚至都不是问题。所有视图和图像都正确旋转。
-
是的,它们会旋转,但看起来不像
-
我编辑了我的帖子,现在你看看它现在的样子
【问题讨论】:
在 viewDidLoad 方法中添加这行代码:NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(rotate), name: UIDeviceOrientationDidChangeNotification, object: nil)
这就是功能:
func rotate(){
if UIDevice.currentDevice().orientation == UIDeviceOrientation.LandscapeLeft {
self.takephoto.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2))
self.recordButton.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2))
} else if UIDevice.currentDevice().orientation == UIDeviceOrientation.LandscapeRight {
self.takephoto.transform = CGAffineTransformMakeRotation(CGFloat(-M_PI_2))
self.recordButton.transform = CGAffineTransformMakeRotation(CGFloat(-M_PI_2))
} else if UIDevice.currentDevice().orientation == UIDeviceOrientation.Portrait {
self.takephoto.transform = CGAffineTransformMakeRotation(CGFloat(0))
self.recordButton.transform = CGAffineTransformMakeRotation(CGFloat(0))
} else if UIDevice.currentDevice().orientation == UIDeviceOrientation.PortraitUpsideDown {
self.takephoto.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))
self.recordButton.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))
}
}
【讨论】:
从仅支持纵向模式开始。您可以在控制器中观察 UIDeviceOrientationDidChangeNotification ,例如: https://stackoverflow.com/a/12086463/4209778
然后根据您的方向,您可以使用 CGAffineTransformMakeRotation 将图标旋转 (+/-)90 度。
【讨论】:
在您的视图控制器中,覆盖 viewWillTransitionToSize:withTransitionCoordinator: 并使用:imageView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2)) 重复您的图像
EG:
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
let isPortrait = size.height > size.width
imageView.transform = CGAffineTransformMakeRotation(CGFloat(isPortrait ? 0 : M_PI_2))
}
【讨论】: