繁体   English   中英

如何在没有间隙的情况下将旋转的UILabel放置在UIStackView中?

[英]How to position rotated UILabels inside a UIStackView with no gap?

我正在尝试创建一个包含已旋转的UILabel的UIStackView。 UIStackView基于UILabel的非旋转宽度来定位UILabel,因此当我期望UILabel直接相邻时,会有很大的差距。 如何正确重新定位这些元素?

码:

    let stackView = UIStackView(frame: canvas.bounds)
    stackView.translatesAutoresizingMaskIntoConstraints = false
    canvas.addSubview(stackView)
    stackView.axis = .horizontal
    stackView.topAnchor.constraint(equalTo: canvas.topAnchor, constant: 0).isActive = true
    stackView.bottomAnchor.constraint(equalTo: canvas.bottomAnchor, constant: 0).isActive = true
    stackView.leftAnchor.constraint(equalTo: canvas.leftAnchor, constant: 0).isActive = true

    let label1 = UILabel()
    label1.transform = CGAffineTransform(rotationAngle: -CGFloat.pi / 2)
    label1.text = "THREEEEEEEE"
    stackView.addArrangedSubview(label1)

    let label2 = UILabel()
    label2.transform = CGAffineTransform(rotationAngle: -CGFloat.pi / 2)
    label2.text = "FOUR"
    stackView.addArrangedSubview(label2)

我所看到的: 在此处输入图片说明

UI检查器视图: 在此处输入图片说明

我的期望: 在此处输入图片说明

为什么不先尝试将视图添加到堆栈视图,然后再旋转堆栈视图?

  let label = UILabel()
label.frame = CGRect(x: 150, y: 200, width: 200, height: 20)
label.text = "Hello World!"
label.textColor = .black

view.addSubview(label)
self.view = view

let label1 = UILabel()
label1.text = "THREEEEEEEE"

let label2 = UILabel()
label2.text = "FOUR"


let stackView = UIStackView(arrangedSubviews: [label1, label2])
stackView.transform = CGAffineTransform(rotationAngle: -CGFloat.pi / 2)
stackView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(stackView)
stackView.axis = .vertical
stackView.topAnchor.constraint(equalTo: label.bottomAnchor, constant: 100).isActive = true

我使用视图而不是画布。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM