带标题和图像的UIButton
问题描述:
我需要一个带有图像内部图像和按钮下的文本的按钮。我无法将图像用作背景,因为它会拉伸图像。所以我的问题是如果我使用按钮的图像,标题将被图像覆盖。有没有解决方案?带标题和图像的UIButton
这里有一个例子应该怎么看起来像在最后:
答
你可以做你喜欢的位置独立的UIImage和的UILabel,并用透明的UIButton覆盖。 这应该做的伎俩。
希望它有帮助。
答
可以继承的UIButton并重新定义layoutSubviews方法。
答
您可以调整UIButton
的以下属性:var titleEdgeInsets: UIEdgeInsets
,var imageEdgeInsets: UIEdgeInsets
。
这样做的另一种方法是子类UIControl
。这是一个UIView
子类,意在用于这种情况。例如,UIButton
是UIControl
的子类。这样你就可以更好地控制布局,而且你不需要与UIButton
的内置行为作斗争。
您可以在代码中或使用Interface Builder在xib
文件中执行布局。
class MyButton: UIControl {
var imageView: UIImageView
var label: UILabel
// adjust colors for changed states like highlighting, etc.
override var isHighlighted: Bool {
didSet {
if isHighlighted {
backgroundColor = UIColor.grey
} else {
backgroundColor = UIColor.white
}
}
}
override var isSelected: Bool { didSet { ... } }
override var isEnabled: Bool { didSet { ... } }
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
override init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
func commonInit() {
imageView = UIImageView(image: UIImage(...))
addSubView(imageView)
label = UILabel(frame: CGRect(...))
addSubView(label)
// TODO: add constraints for layout
}
}
是的,你可以通过调整标题和图像插入来实现。 – Vishnuvardhan