Swift 当 iPad 处于横向模式时旋转图标

Swift rotate icons when iPad is in landscape mode

目前我的应用程序在纵向模式下看起来像这样:

但是当我的 iPad 处于横向模式时,我希望我的图标看起来像这样:

现在它在横向模式下看起来像这样:

所以我的问题是:如何旋转图标?我不需要更多的东西只是图标应该移动

从仅支持纵向模式开始。您可以在控制器中观察 UIDeviceOrientationDidChangeNotification,例如:

然后根据您的方向,您可以使用 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))
}

将这行代码添加到 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))
 }
}