Ven*_*enc 3 uibutton ios swift
我有两个动态大小按钮,我需要为它们制作图像和标题文本。图像必须位于顶部,文本位于图像下方,并且两者都必须位于按钮的中心。我尝试这样做,imageEdgeInsatse但无法理解我做错了什么。
这是我的代码:
leftButton.imageEdgeInsets = UIEdgeInsets(top: 5, left:0, bottom: 60, right: 0)
leftButton.titleEdgeInsets = UIEdgeInsets(top: 60, left: 0, bottom: 5, right: 0)
rightButton.imageEdgeInsets = UIEdgeInsets(top: 5, left: 0, bottom: 60, right: 0)
rightButton.titleEdgeInsets = UIEdgeInsets(top: 60, left: 0, bottom: 5, right: 0)
Run Code Online (Sandbox Code Playgroud)
尝试使用此代码扩展。
extension UIButton {
func alignVertical(spacing: CGFloat = 6.0) {
guard let imageSize = self.imageView?.image?.size,
let text = self.titleLabel?.text,
let font = self.titleLabel?.font
else { return }
self.titleEdgeInsets = UIEdgeInsets(top: 0.0, left: -imageSize.width, bottom: -(imageSize.height + spacing), right: 0.0)
let labelString = NSString(string: text)
let titleSize = labelString.size(withAttributes: [kCTFontAttributeName as NSAttributedStringKey: font])
self.imageEdgeInsets = UIEdgeInsets(top: -(titleSize.height + spacing), left: 0.0, bottom: 0.0, right: -titleSize.width)
let edgeOffset = abs(titleSize.height - imageSize.height) / 2.0;
self.contentEdgeInsets = UIEdgeInsets(top: edgeOffset, left: 0.0, bottom: edgeOffset, right: 0.0)
}
}
Run Code Online (Sandbox Code Playgroud)
像这样使用扩展
override func viewDidLayoutSubviews() {
button.alignVertical()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2609 次 |
| 最近记录: |