提问人:Joakim Sjöstedt 提问时间:9/21/2023 最后编辑:Joakim Sjöstedt 更新时间:9/22/2023 访问量:114
当每侧的填充需要不同时,如何修复 iOS 15.0 中弃用的 ImageEdgeInsets?[复制]
How do I fix ImageEdgeInsets deprecated in iOS 15.0 when the padding needs to be different on each side? [duplicate]
问:
所以在.现在代码如下所示:imageEdgeInsets
iOS 15
class MyButton: UIButton {
init(title: String) {
super.init(frame: .zero)
setTitle(title, for: .normal)
setTitleColor(.white, for: .normal)
backgroundColor = .blue
layer.cornerRadius = 10
setImage(UIImage(systemName: "heart.fill"), for: .normal)
// This is depricated
imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 40)
configuration?.contentInsets = NSDirectionalEdgeInsets(top: 8, leading: 16, bottom: 8, trailing: 16)
addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@objc func buttonTapped() {
print("Button tapped!")
}
}
我一直在寻找解决方案,并在这里找到了一个:
“imageEdgeInsets”在 iOS 15.0 中已弃用
显然我们应该改用。因此,我们应该使用 .configuration?.imagePadding
configuration?.contentInsets = NSDirectionalEdgeInsets(top: 8, leading: 16, bottom: 8, trailing: 16)
configuration?.imagePadding = 0
我想你已经可以发现问题了:只需要一个,所以如果你想在不同的侧面有不同的填充,就像这样:你不走运。configuration?.imagePadding
CGFloat
NSDirectionalEdgeInsets(top: 8, leading: 16, bottom: 8, trailing: 16)
那么,如何摆脱弃用,同时保留所有边的不同填充呢?
注意***
问题是一样的titleEdgeInsets
此外,使用后它似乎什么也做不了,而工作就像一个魅力。configuration?.imagePadding
NSDirectionalEdgeInsets(top: 8, leading: 16, bottom: 8, trailing: 16)
答:
1赞
vadian
9/22/2023
#1
替换是图像的组合placement
configuration?.imagePlacement = .leading
以及图像和文本之间的距离
configuration?.imagePadding = 12.0
imagePlacement
指定图像相对于文本的位置。imagePadding
指定图像和文本之间的距离。contentInsets
指定图像和文本到按钮边缘的距离。
评论
0赞
Joakim Sjöstedt
9/22/2023
这很有趣,谢谢!但是,如果要设置多个填充怎么办?将 imagePlacement 设置为 .trailing,然后在那里设置填充?
评论