每次单击按钮时将 UIButton 旋转 90 度

Posted

技术标签:

【中文标题】每次单击按钮时将 UIButton 旋转 90 度【英文标题】:Rotating a UIButton by 90 degrees every time the button is clicked 【发布时间】:2016-08-19 17:55:49 【问题描述】:

如何在并跟踪每个旋转的位置/角度?

这是我到目前为止的代码,但它只旋转一次:

@IBAction func gameButton(sender: AnyObject) 
    UIView.animateWithDuration(0.05, animations: (
        self.gameButtonLabel.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2))
    ))

【问题讨论】:

【参考方案1】:
self.gameButtonLabel.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2))

应该改为

// Swift 3 - Rotate the current transform by 90 degrees.
self.gameButtonLabel.transform = self.gameButtonLabel.transform.rotated(by: CGFloat(M_PI_2))

// OR

// Swift 2.2+ - Pass the current transform into the method so it will rotate it an extra 90 degrees.
self.gameButtonLabel.transform = CGAffineTransformRotate(self.gameButtonLabel.transform, CGFloat(M_PI_2))

使用CGAffineTransformMake...,您可以创建一个全新的转换并覆盖按钮上已有的任何转换。由于您想将 90 度附加到已经存在的变换(可能已经旋转了 0、90 等度),因此您需要添加到当前变换。我给出的第二行代码就可以做到这一点。

【讨论】:

Swift 3 版本报错:'CGAffineTransform' 类型的值没有成员'rotated' 并且 Swift 2.2+ 版本报错:调用中有额外参数 嗯。你在哪个 Xcode 测试版上?他们不断更改我所有的方法名称。我认为我发布的代码来自 Xcode 8 beta 5。 我还没有升级到 Xcode 8 beta。我目前正在使用 Xcode 7.3.1,但在编写代码时仍然会从 Xcode 获得 Swift 3 自动更正建议。 我创建了一个新项目,在视图中放置了一个按钮,并将一个动作连接到该按钮。该按钮的操作是这行代码:sender.transform = CGAffineTransformRotate(sender.transform, CGFloat(M_PI_2))。它可以满足您的需求。我无法在调用错误中获得 Extra 参数。此代码在 Xcode 7.3.1/Swift 2.2 和 Xcode 8 beta 6/Swift 2.3 上运行。我还验证了我提供的 Swift 3 代码适用于 Xcode 8 beta 6/Swift 3。 Yessss 哈哈谢谢你这么多的人。我非常感谢您的所有努力并不断回复。我已经赞成你的回答。让我知道我是否可以为你做任何其他事情作为回报。谢谢【参考方案2】:

斯威夫特 4:

@IBOutlet weak var expandButton: UIButton!

var sectionIsExpanded: Bool = true 
    didSet 
        UIView.animate(withDuration: 0.25) 
            if self.sectionIsExpanded 
                self.expandButton.transform = CGAffineTransform.identity
             else 
                self.expandButton.transform = CGAffineTransform(rotationAngle: -CGFloat.pi / 2.0)
            
        
    


@IBAction func expandButtonTapped(_ sender: UIButton) 
    sectionIsExpanded = !sectionIsExpanded

【讨论】:

最佳答案!

以上是关于每次单击按钮时将 UIButton 旋转 90 度的主要内容,如果未能解决你的问题,请参考以下文章

在 UIButton 中,setImage 和 setBackgroudnImage 的内容 id 不同,它旋转了 90 度

jquery css在每次按下按钮时连续旋转90度

Phonegap/Cordova 在 iphone 上加载时将启动图像旋转 90 度

单击div,使其顺时针旋转180°

旋转 UIBarButtonItem Swift

矩阵的旋转(90度)输出: