extension UIButton {
func setSubViewPosition(image anImage: UIImage? = nil,
title: String? = nil,
titlePosition: UIViewContentMode,
additionalSpacing: CGFloat,
state: UIControlState){
self.imageView?.contentMode = .center
self.setImage(anImage, for: state)
let title = title ?? (self.titleLabel?.text ?? "")
positionLabelRespectToImage(title: title,
position: titlePosition,
spacing: additionalSpacing)
self.titleLabel?.contentMode = .center
self.setTitle(title, for: state)
}
private func positionLabelRespectToImage(title: String,
position: UIViewContentMode,
spacing: CGFloat) {
let imageSize = self.imageRect(forContentRect: self.frame)
let titleFont = self.titleLabel?.font!
let titleSize = title.size(withAttributes: [NSAttributedStringKey.font: titleFont!])
var titleInsets: UIEdgeInsets
var imageInsets: UIEdgeInsets
switch (position){
case .top:
let top = -imageSize.height
- titleSize.height
- spacing
let left = -imageSize.width
titleInsets = UIEdgeInsets(top: top,
left: left,
bottom: 0,
right: 0)
imageInsets = UIEdgeInsets(top: 0,
left: 0,
bottom: 0,
right: -titleSize.width)
case .bottom:
let top = imageSize.height
+ titleSize.height
+ spacing
let left = -imageSize.width
titleInsets = UIEdgeInsets(top: top,
left: left,
bottom: 0,
right: 0)
let right = -titleSize.width
imageInsets = UIEdgeInsets(top: 0,
left: 0,
bottom: 0, right: right)
case .left:
let left = -(imageSize.width * 2)
titleInsets = UIEdgeInsets(top: 0,
left:left,
bottom: 0,
right: 0)
let right = -(titleSize.width * 2 + spacing)
imageInsets = UIEdgeInsets(top: 0,
left: 0,
bottom: 0,
right: right)
case .right:
titleInsets = UIEdgeInsets(top: 0,
left: 0,
bottom: 0,
right: -spacing)
imageInsets = UIEdgeInsets(top: 0,
left: 0,
bottom: 0,
right: 0)
default:
titleInsets = UIEdgeInsets(top: 0,
left: 0,
bottom: 0,
right: 0)
imageInsets = UIEdgeInsets(top: 0,
left: 0,
bottom: 0,
right: 0)
}
self.titleEdgeInsets = titleInsets
self.imageEdgeInsets = imageInsets
}
}
swift BUtton调整左右subView的间距
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- import UIKit extension UIButton { /** 图片在左,标题在右 */ fu...
- 遇到一些变态需求,UI不喜欢系统默认的间距。所以研究下修改rightBarButtonItem与leftBarBu...
- 先上一张效果图 外面一句话调用,无需继承 先定义一个枚举,然后给UIButton写个extension 下面直接上...
- 我下班到家比较晚,回到家看到安宝在做口算练习册,自己做了四套练习,值得表扬。 今天依然是边学习一边...