如何在Swift中旋转UIButton和UILabel的文本?

Sur*_*gch 62 rotation uibutton uilabel ios swift

你怎么能为UIButton和旋转文字UILabel?90度,180度.

注意:在将此标记为重复之前,我有意将我的问题建模为此问题的Swift版本:如何在Objective-C中为UIButton和UILabel旋转文本?

Sur*_*gch 182

我把我的答案格式类似于这样的回答.

这是原始标签:

在此输入图像描述

顺时针旋转90度:

yourLabelName.transform = CGAffineTransform(rotationAngle: CGFloat.pi / 2)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

旋转180度:

yourLabelName.transform = CGAffineTransform(rotationAngle: CGFloat.pi)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

逆时针旋转90度:

yourLabelName.transform = CGAffineTransform(rotationAngle: -CGFloat.pi / 2)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

旋转按钮也是一样的.值得庆幸的是,触摸事件也会被旋转,因此按钮仍可在其新界限中单击,而无需执行任何额外操作.

yourButtonName.transform = CGAffineTransform(rotationAngle: CGFloat.pi / 2)
Run Code Online (Sandbox Code Playgroud)

笔记:

CGAffineTransform的文档

基本格式是CGAffineTransform(rotationAngle: CGFloat)其中rotationAngle的弧度,不度.

整圆(360度)有2π弧度.Swift包含有用的常量CGFloat.pi.

  • CGFloat.pi =π= 180度
  • CGFloat.pi / 2 =π/ 2 = 90度

自动布局:

自动布局不适用于旋转视图.(有关解释原因,请参阅Frame vs Bounds.)可以通过创建自定义视图来解决此问题.这个答案显示了如何为a做UITextView,但它与标签或按钮的基本概念相同.(请注意,CGAffineTransformScale由于您不需要镜像文本,因此必须删除该答案中的行.)

有关


dre*_*ees 11

如果您经常这样做,则将无法进行扩展。同样,这将允许您将视图旋转0-360度。

extension UIView {
    func rotate(degrees: CGFloat) {
        rotate(radians: CGFloat.pi * degrees / 180.0)
    }

    func rotate(radians: CGFloat) {
        self.transform = CGAffineTransform(rotationAngle: radians)
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您只需在视图上调用旋转

myView.rotate(degrees: 90)
Run Code Online (Sandbox Code Playgroud)


小智 6

迅速

顺时针旋转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)
Run Code Online (Sandbox Code Playgroud)

逆时针旋转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)
Run Code Online (Sandbox Code Playgroud)