gpt4 book ai didi

ios - 我如何使用 SnapKit 实现这一目标?

转载 作者:行者123 更新时间:2023-11-28 14:12:59 27 4
gpt4 key购买 nike

我想要的是这样的: enter image description here

这是我的代码:

    let label1 = UILabel()
let label2 = UILabel()
label1.textColor = .white
label1.backgroundColor = .red
view.addSubview(label1)
label1.snp.makeConstraints { (m) in
m.left.equalToSuperview().offset(100)
m.top.equalToSuperview().offset(100)
}
view.addSubview(label2)
label2.snp.makeConstraints { (m) in
m.left.equalTo(label1.snp.right)
m.top.equalToSuperview().offset(100)
m.right.equalToSuperview().offset(-100)
}
label1.text = "123456"
label2.text = "789"

它是这样工作的: enter image description here

为什么没有左对齐?我哪里错了?

最佳答案

删除您对 label2权利约束。

label2.snp.makeConstraints { (m) in
m.left.equalTo(label1.snp.right)
m.top.equalToSuperview().offset(100)
// m.right.equalToSuperview().offset(-100)
}

您的 label2 已附加到 super View 的左侧,距离为 100。因此,因为 label1 没有设置宽度,它会调整 本身尊重 label2 的右约束,从而满足您设置的所有约束。

如果你不能移除左约束,那么你需要在没有任何文本约束的情况下获取标签的宽度。你可以这样得到它。例如,

let label = UILabel()
label.text = "Blah"
let width = label.intrinsicContentSize.width

现在您使用 snapKit 将此宽度设置为 label1 的宽度。并设置左约束小于等于100。

替代更好方法,您也可以尝试使用带有属性文本的单个标签。因为你知道第一个标签和第二个标签的字符串,你可以很容易地用 NSAttributedString 格式化它,避免多个标签约束的麻烦。

let string1 = NSAttributedString(string: "Your first string", attributes: [NSAttributedString.Key.foregroundColor: UIColor.white, NSAttributedString.Key.backgroundColor: UIColor.red])
let string2 = NSAttributedString(string: "Your second string", attributes: [NSAttributedString.Key.foregroundColor: UIColor.black, NSAttributedString.Key.backgroundColor: UIColor.white])
var finalString: NSMutableAttributedString = NSMutableAttributedString()
finalString.append(string1)
finalString.append(string2)

现在将 anchor 设置为 10 right, top, -10 left。

关于ios - 我如何使用 SnapKit 实现这一目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52380904/

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