【发布时间】:2021-04-06 11:24:12
【问题描述】:
以下是我的困境以及我为达到我的处境而采取的步骤。
我的第一步
我创建了一个名为BubbleView的类:
import UIKit
import SnapKit
class BubbleView : UIView {
var label:UILabel!
var text:String = "" {
didSet {
guard label != nil else {return}
label.text = text
}
}
init() {
super.init(frame: .zero)
setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupUI() {
self.clipsToBounds = true
self.backgroundColor = .systemBlue
self.layer.cornerRadius = 15
label = UILabel()
label.textColor = .white
label.numberOfLines = 0
addSubview(label)
label.snp.makeConstraints { (make) in
make.edges.equalToSuperview().inset(10)
}
}
}
第 2 步
我创建一个视图控制器并添加我的BubbleView:
import UIKit
import SnapKit
class ViewController: UIViewController {
var bubble: BubbleView!
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
self.bubble.text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
}
}
func setupUI() {
bubble = BubbleView()
bubble.text = "Hello"
view.addSubview(bubble)
bubble.snp.makeConstraints { (make) in
make.width.equalToSuperview().multipliedBy(0.7).priority(.low)
make.width.lessThanOrEqualToSuperview().multipliedBy(0.7)
make.top.right.equalTo(self.view.safeAreaLayoutGuide).inset(20)
}
}
}
我的问题
我的问题是,当我做bubble.text = "Hello"时,右边有大量的尾随空格,如下图:
我正在尝试去掉这个尾随空格,以便图像看起来更像:
我需要什么
当设备旋转到横向模式时,我需要 BubbleView 调整大小以占据屏幕的 70%,所以它看起来像这样:
到目前为止,气泡视图确实做到了这一点,但它总是有令人讨厌的尾随空格,如第一张图片所示。通过删除BubbleView 上的以下约束:
make.width.equalToSuperview().multipliedBy(0.7).priority(.low)
它修复了尾随空格的问题,但是,当我旋转设备时,宽度不会更新为 0.7 * 设备的宽度,如下所示:
帮助
所以,我想知道是否有人知道如何在只有少量文本时删除BubbleView 上的尾随空格,但仍然保持设备旋转时的行为,它会填满0.7 * screen width 如果必要,而不是保持相同的宽度。
非常感谢您的宝贵时间!
【问题讨论】:
-
我注意到你没有按照我在之前讨论中所说的去做。您正在使用
priority(.low)进行等式约束。那不是我说的。我说100。你试过吗?我选择这个号码是有原因的。当然我可能是错的,我无意冒犯,但你至少可以在声称我的建议不起作用之前尝试一下,因为你所做的不是我的建议。谢谢。 (抱歉,我现在不能自己测试。) -
我的错!非常感谢您的评论。我已经尝试了 100 优先级,它解决了额外尾随空间的问题,但是当我将设备旋转到横向模式时,视图的宽度不会扩大,它保持与纵向模式相同的宽度(即,垂直方向),当我希望它调整以占用更多可用空间时。在这一点上,我认为
SnapKitDSL 可能存在错误..?任何想法都非常感谢! -
不知道,抱歉,无法测试。
标签: ios swift autolayout snapkit