Swift:如何为UIButton和UILabel旋转文本?
如何为UIButton
和UILabel
旋转文本? 90度,180度
注意:在将其标记为重复项之前,我故意将我的问题build模为这一个的Swift版本: Objective C:如何为UIButton和UILabel旋转文本?
我正在以类似的格式回答我的答案 。
这是原始的标签:
顺时针旋转90度
yourLabelName.transform = CGAffineTransform(rotationAngle: CGFloat.pi / 2)
旋转180度:
yourLabelName.transform = CGAffineTransform(rotationAngle: CGFloat.pi)
逆时针旋转90度:
yourLabelName.transform = CGAffineTransform(rotationAngle: -CGFloat.pi / 2)
做同样的事情来旋转一个button。 值得庆幸的是触摸事件也被旋转了,所以button在新的边界仍然是可点击的,而不需要做任何额外的事情。
yourButtonName.transform = CGAffineTransform(rotationAngle: CGFloat.pi / 2)
笔记:
CGAffineTransform的文档
基本格式是CGAffineTransform(rotationAngle: CGFloat)
其中rotationAngle
是弧度,而不是度数。
有一个整圆(360度)有2π弧度。 Swift包含有用的常量CGFloat.pi
。
-
CGFloat.pi
=π= 180度 -
CGFloat.pi / 2
=π/ 2 = 90度
自动布局:
自动布局不适用于旋转的视图。 (请参阅“ 框架与边界 ”以解释原因。)通过创build自定义视图可以解决此问题。 这个答案显示了如何为一个UITextView
做,但它是一个标签或button的基本概念。 (请注意,您将不得不删除该答案中的CGAffineTransformScale
行,因为您不需要镜像文本。)
有关
- 如何在CALayer上进行转换?
- 如何在Swift中应用多个转换
- iOS中的CTM变换与仿射变换(用于平移,旋转,缩放)
迅速
顺时针旋转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)
改编自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)