【问题标题】:Swift rotate icons when iPad is in landscape modeiPad处于横向模式时快速旋转图标
【发布时间】:2016-07-26 12:44:04
【问题描述】:

目前我的应用在纵向模式下如下所示:

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

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

所以我的问题是:我怎样才能旋转图标?我不需要更多的东西,只是图标应该移动

【问题讨论】:

  • 我不明白。如果您在情节提要中使用尺寸等级,这甚至都不是问题。所有视图和图像都正确旋转。
  • 是的,它们会旋转,但看起来不像
  • 我编辑了我的帖子,现在你看看它现在的样子

标签: ios swift rotation icons


【解决方案1】:

在 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))
 }
}

【讨论】:

    【解决方案2】:

    从仅支持纵向模式开始。您可以在控制器中观察 UIDeviceOrientationDidChangeNotification ,例如: https://stackoverflow.com/a/12086463/4209778

    然后根据您的方向,您可以使用 CGAffineTransformMakeRotation 将图标旋转 (+/-)90 度。

    【讨论】:

      【解决方案3】:

      在您的视图控制器中,覆盖 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))
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-01
        • 2014-03-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多