【问题标题】:How to programmatically rotate the view by 180 degrees on iOS?如何在 iOS 上以编程方式将视图旋转 180 度?
【发布时间】:2011-10-12 10:28:13
【问题描述】:

如何在我的 iPhone 应用程序中以编程方式将视图旋转 180 度?

【问题讨论】:

    标签: ios objective-c iphone cocoa-touch uiview


    【解决方案1】:

    应该可以使用CGAffineTransform

    引用this question,这应该可以解决问题:

    CGFloat radians = atan2f(yourView.transform.b, yourView.transform.a);
    CGFloat degrees = radians * (180 / M_PI);
    CGAffineTransform transform = CGAffineTransformMakeRotation((90 + degrees) * M_PI/180);
    yourView.transform = transform;
    

    【讨论】:

    • 这会将其旋转 90 度。如果你想让它旋转 180 度,最后一行应该是 CGAffineTransformMakeRotation(( 180 + degrees) * M_PI/180) 而不是 90
    【解决方案2】:

    使用不同函数的结果与@Manny 的答案相同。

     CGFloat degreesOfRotation = 180.0;
     view.transform = CGAffineTransformRotate(view.transform,
         degreesOfRotation * M_PI/180.0);
    

    【讨论】:

      【解决方案3】:

      由于 'CGAffineTransformRotate' 使用弧度作为其测量单位,并且 180 度与 PI 相同,因此您可以简单地执行其他答案中提供的数学运算:

      view.transform = CGAffineTransformRotate(view.transform, M_PI);
      

      斯威夫特 3:

      view.transform = view.transform.rotated(by: .pi)
      

      如果您打算进行大量变换,最好阅读弧度,以便了解发生了什么。

      【讨论】:

        【解决方案4】:

        简单的解决方案:

        view.transform = CGAffineTransformMakeRotation(degrees*M_PI/180);
        

        【讨论】:

          【解决方案5】:

          在 Swift 3 中:

          let rotationDegrees =  180.0
          let rotationAngle = CGFloat(rotationDegrees * M_PI / 180.0)
          view.transform = CGAffineTransform(rotationAngle: rotationAngle)
          

          【讨论】:

            【解决方案6】:

            最新的 Swift 3 语法:

            view.transform = view.transform.rotated(by: .pi)
            

            【讨论】:

              【解决方案7】:

              斯威夫特 4:

              self.view.transform = CGAffineTransform(rotationAngle: .pi);
              

              对于 Benjamin Mayovtcajones 回答的评论(我显然没有足够的分数来评论他/她的答案):

              view.transform = view.transform.rotated(by: .pi)
              

              这将在第一次工作,但下一次调用它会再次旋转视图,回到原来的旋转,这可能不是你想要的。每次都准确设置变换值会更安全。

              【讨论】:

                猜你喜欢
                • 2016-08-17
                • 1970-01-01
                • 2011-11-19
                • 1970-01-01
                • 2016-02-13
                • 1970-01-01
                • 2011-07-31
                • 1970-01-01
                • 2017-02-02
                相关资源
                最近更新 更多