gpt4 book ai didi

swift - 如何将 UILabel 的文本保存在安全区域内?

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

我创建了一个自定义的 UILabel 以便能够更改其安全区域,以便文本可以有一些填充并且看起来更好,但是在我更改了我的 safeArea 之后,文本仍然从一个边缘到另一个边缘一直延伸并且没有添加的填充这是我的代码

class customLabel: UILabel {

override init(frame: CGRect) {
super.init(frame: frame)
setUp()

}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}



override var safeAreaInsets: UIEdgeInsets {
return UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
}


func setUp(){
lineBreakMode = NSLineBreakMode.byWordWrapping
numberOfLines = 0
textColor = UIColor.white
textAlignment = .center
layer.cornerRadius = 8
clipsToBounds = true
backgroundColor = UIColor.black.withAlphaComponent(0.7)
font = UIFont.boldSystemFont(ofSize: 20)
translatesAutoresizingMaskIntoConstraints = false

}

}

如何将文本保留在新的 safeAreaInset 中?

谢谢!

最佳答案

safeAreaInsets 不应用于文本填充。添加了安全区域以防止导航栏、标签栏、工具栏等覆盖 UIView 的内容。因此您可以在 UIView 子类中覆盖此变量以使其 subview 在以下情况下可见您向 UIView 的安全区域添加约束。但是由于 UILabel 中的文本对安全区域没有约束,因此覆盖此变量没有任何意义。

相反,您需要覆盖 textRect(forBounds:limitedToNumberOfLines:) UILabel 的方法。

override func textRect(forBounds bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect {
return bounds.insetBy(dx: 10, dy: 10)
}

insetBy(dx:dy:) 方法从 dx 返回带有左右 insets 和 dy 的顶部和底部 insets 的矩形。

关于swift - 如何将 UILabel 的文本保存在安全区域内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53153179/

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