gpt4 book ai didi

ios - Swift + Autolayout : Rotate UILabel, 保持在 UIView 旁边

转载 作者:搜寻专家 更新时间:2023-11-01 05:45:51 25 4
gpt4 key购买 nike

我想将一个 UILabel 附加到另一个 UIView,当前使用 AutoLayout 布局。

我想实现的是:

enter image description here

但是如果我只旋转 View ,它会围绕中心点旋转,如果我改变 anchor ,上面的 View 就会移动。我如何必须首先使用自动布局布局两个 View ,然后进行旋转?

目前,自动布局执行以下操作:

enter image description here

使用以下代码:

    label.layer.anchorPoint = CGPoint(x: 0, y: 0)
label.layer.transform = CATransform3DMakeRotation(CGFloat(-45 / 180.0 * CGFloat(M_PI)), 0, 0, 1)

我确实得到了类似的东西

enter image description here

最佳答案

不要更改 anchor ,因为那样会弄乱自动布局。

相反,补偿 anchor 在变换中的位置:

class ViewController: UIViewController {

@IBOutlet var label: UILabel!
@IBOutlet var slider: UISlider!

override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
updateTransform()
}

@IBAction func sliderValueChanged(_ sender: Any) {
updateTransform()
}

private func updateTransform() {
var transform = CGAffineTransform.identity
let labelSize = label.bounds.size
transform = transform.translatedBy(x: -labelSize.width / 2, y: labelSize.height / 2)
transform = transform.rotated(by: -CGFloat(slider.value) * CGFloat.pi / 2)
transform = transform.translatedBy(x: labelSize.width / 2, y: -labelSize.height / 2)
label.transform = transform
}

}

结果:

demo of rotated label

关于ios - Swift + Autolayout : Rotate UILabel, 保持在 UIView 旁边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41063225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com