extension UIButton {
func imageViewUpTitleLabelDown() {
self.imageEdgeInsets = UIEdgeInsets(top: 0, left: (self.titleLabel?.frame.size.width)!/2, bottom: (self.titleLabel?.frame.size.height)!+10, right: -(self.titleLabel?.frame.size.width)!/2)
self.titleEdgeInsets = UIEdgeInsets(top: (self.imageView?.frame.size.height)!+10, left: -(self.imageView?.frame.size.width)!, bottom: 0, right: 0)
}
}
class SwitchMapPresentVC: UIViewController {
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
print("\(#function)")
standardBtn.imageViewUpTitleLabelDown()
}
}
注意:
要在UIViewController的viewDidLayoutSubviews()方法中用button调用imageViewUpTitleLabelDown()方法,以为这个时候button的imageView和titleLabel已经布局完成有了大小,在其他地方调用imageView和titleLabel的宽高都是0,可能达不到预期效果
主要参考博客:
iOS UIButton之UIEdgeInsets详解
其他参考博客:
iOS Button图文混排的四种实现方式
对于UIEdgeInsets还是没有完全理解,下次有时间再写一篇关于UIEdgeInsets的博客
button的宽高为:
100
120
150
200