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的间距
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- import UIKit extension UIButton { /** 图片在左,标题在右 */ fu...
- 遇到一些变态需求,UI不喜欢系统默认的间距。所以研究下修改rightBarButtonItem与leftBarBu...
- 先上一张效果图 外面一句话调用,无需继承 先定义一个枚举,然后给UIButton写个extension 下面直接上...
- 我下班到家比较晚,回到家看到安宝在做口算练习册,自己做了四套练习,值得表扬。 今天依然是边学习一边...