我的导航有问题,我的按钮显示不正确。我想要 2 行,每行 3 个按钮。每个按钮都有一个图像和一个标签。标签应居中并位于图像下方。但这是我似乎无法正常工作的棘手事情,因为每次我启动模拟器时,第一个按钮看起来没问题,所有其他按钮都正确显示在图像的热量中,但不是标签。我试图弄乱按钮的大小,但注意似乎起作用了。
我还尝试使用 question 中的代码在 stackoverflow 上,但我没有正确锻炼。因为根本没有显示图像,但尺寸是正确的。此外,标签仅显示在第一个按钮上。
我正在使用 IBDesignable
来扩展我分配给 Button
的 UIButton
类
import UIKit
@IBDesignable
class VerticalButton: UIButton {
@IBInspectable public var padding: CGFloat = 20.0 {
didSet {
setNeedsLayout()
}
}
override var intrinsicContentSize: CGSize {
let maxSize = CGSize(width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude)
if let titleSize = titleLabel?.sizeThatFits(maxSize), let imageSize = imageView?.sizeThatFits(maxSize) {
let width = ceil(max(imageSize.width, titleSize.width))
let height = ceil(imageSize.height + titleSize.height + padding)
return CGSize(width: width, height: height)
}
return super.intrinsicContentSize
}
override func layoutSubviews() {
if let image = imageView?.image, let title = titleLabel?.attributedText {
let imageSize = image.size
let titleSize = title.size()
titleEdgeInsets = UIEdgeInsets(top: 0.0, left: -imageSize.width, bottom: -(imageSize.height + padding), right: 0.0)
imageEdgeInsets = UIEdgeInsets(top: -(titleSize.height + padding), left: 0.0, bottom: 0.0, right: -titleSize.width)
}
super.layoutSubviews()
}
}
我猜我在计算按钮的 intrinsicContentSize
时出错了。
我还仔细检查了该类是否已分配给所有相关按钮,以及每个按钮是否都有标签。除此之外,我还检查了没有通过界面构建器设置的插图。
到目前为止,我没有运气找到解决方案,因此我提出了问题。我感谢您的帮助。如果您需要更多信息,请随时与我们联系。我很乐意提供它。
谢谢
最佳答案
感谢@DonMag 的帮助,我发现问题不在于代码,而在于图像的大小。
关于ios - 如何对齐 UIImage 下面的 UIButton 中的文本,因为它没有正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58542467/