【问题标题】:How to rotate button when device orientation changes in swift?当设备方向快速变化时如何旋转按钮?
【发布时间】:2016-07-28 05:58:44
【问题描述】:

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

button.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))

但是我必须在我的代码中哪里调用它?
我不想将我的设备设置为横向模式,我只想在应该处于横向模式时旋转图标。
提前致谢!

【问题讨论】:

标签: ios swift rotation device-orientation


【解决方案1】:

你应该重写 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】:

    最好的方法是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
        }
    }
    

    这个解决方案很简单,真的很容易做到。

    【讨论】:

      【解决方案3】:

      我猜你已经知道如何“旋转”按钮了,所以我只告诉你如何知道设备已经旋转。

      在视图控制器中,覆盖 willRotateToInterfaceOrientation:

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

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

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

      【讨论】:

      • 已弃用
      • @RanLearns 是的,这是 4 年前的。
      猜你喜欢
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多