如何旋转UIButton
和的文字UILabel
?90度,180度
注意:在将其标记为重复项之前,我有意将问题建模为以下内容的Swift版本:如何在Objective-C中旋转UIButton和UILabel的文本?
如何旋转UIButton
和的文字UILabel
?90度,180度
注意:在将其标记为重复项之前,我有意将问题建模为以下内容的Swift版本:如何在Objective-C中旋转UIButton和UILabel的文本?
Answers:
我将答案的格式与此答案相似。
这是原始标签:
顺时针旋转90度:
yourLabelName.transform = CGAffineTransform(rotationAngle: CGFloat.pi / 2)
旋转180度:
yourLabelName.transform = CGAffineTransform(rotationAngle: CGFloat.pi)
逆时针旋转90度:
yourLabelName.transform = CGAffineTransform(rotationAngle: -CGFloat.pi / 2)
做同样的事情来旋转按钮。幸运的是,触摸事件也会旋转,因此按钮在新的范围内仍然可以单击,而无需执行任何其他操作。
yourButtonName.transform = CGAffineTransform(rotationAngle: CGFloat.pi / 2)
笔记:
基本格式是CGAffineTransform(rotationAngle: CGFloat)
其中rotationAngle
的弧度,不度。
一整圈(360度)中有2π弧度。Swift包含有用的常量CGFloat.pi
。
CGFloat.pi
=π= 180度CGFloat.pi / 2
=π/ 2 = 90度自动版面配置:
自动布局不适用于旋转视图。(有关原因的说明,请参见“框与边界”。)可以通过创建自定义视图来解决此问题。此答案说明了如何针对进行操作UITextView
,但这与标签或按钮的基本概念相同。(请注意,CGAffineTransformScale
由于不需要镜像文本,因此您必须删除该答案中的行。)
有关
顺时针旋转90度:
var rotateLabel: UILabel = UILabel(frame: CGRectMake(100, 0, 28, 159))
rotateLabel.textAlignment = .Right
rotateLabel.text = "Hello!"
self.view.addSubview(rotateLabel)
rotateLabel.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2))
rotateLabel.frame = CGRectMake(100, 0, 28, 159)
逆时针旋转90度:
var rotateLabel: UILabel = UILabel(frame: CGRectMake(100, 0, 28, 159))
rotateLabel.textAlignment = .Right
rotateLabel.text = "Hello!"
self.view.addSubview(rotateLabel)
rotateLabel.transform = CGAffineTransformMakeRotation(CGFloat(-M_PI_2))
rotateLabel.frame = CGRectMake(100, 0, 28, 159)
我建议使用带有度数和逆/顺时针方向的扩展
func rotate(degrees: Int , clockwise: Bool)
{
let x = 180 / degrees
if (clockwise)
{
self.transform = CGAffineTransform(rotationAngle: CGFloat.pi / CGFloat(x))
}
else
{
self.transform = CGAffineTransform(rotationAngle: -CGFloat.pi / CGFloat(x))
}
}
我将其用作,extension UILabel {}
但这显然取决于您
改编了Ananthu R Krishnan的答案以适合Swift 3.1。
逆时针旋转90度:
let rotateLabel: UILabel = UILabel(frame: CGRect(x:15, y:66, width:28, height:159))
rotateLabel.textAlignment = .right
rotateLabel.text = "TEXT"
self.view.addSubview(rotateLabel)
rotateLabel.transform = CGAffineTransform(rotationAngle: CGFloat(-(Double.pi / 2.0)))
rotateLabel.frame = CGRect(x:15, y:66, width:28, height:159)