Swift:如何为UIButton和UILabel旋转文本?

如何为UIButtonUILabel旋转文本? 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)