Swift button画像位置の設定
2494 ワード
enum ButtonEdgeInsetsStyle {
case ButtonEdgeInsetsStyleTop // image ,label
case ButtonEdgeInsetsStyleLeft // image ,label
case ButtonEdgeInsetsStyleBottom // image ,label
case ButtonEdgeInsetsStyleRight // image ,label
}
extension UIButton {
func layoutButtonEdgeInsets(style:ButtonEdgeInsetsStyle,space:CGFloat) {
var labelWidth : CGFloat = 0.0
var labelHeight : CGFloat = 0.0
var imageEdgeInset = UIEdgeInsetsZero
var labelEdgeInset = UIEdgeInsetsZero
let imageWith = self.imageView?.frame.size.width
let imageHeight = self.imageView?.frame.size.height
if Double(UIDevice.currentDevice().systemVersion) >= 8.0 {
labelWidth = (self.titleLabel?.intrinsicContentSize().width)!
labelHeight = (self.titleLabel?.intrinsicContentSize().height)!
}else {
labelWidth = (self.titleLabel?.frame.size.width)!
labelHeight = (self.titleLabel?.frame.size.height)!
}
labelWidth = CGFloat(36)
switch style {
case .ButtonEdgeInsetsStyleTop:
imageEdgeInset = UIEdgeInsetsMake(-labelHeight-space/2.0, 0, 0, -labelWidth)
labelEdgeInset = UIEdgeInsetsMake(0, -imageWith!, -imageHeight!-space/2.0, 0)
case .ButtonEdgeInsetsStyleLeft:
imageEdgeInset = UIEdgeInsetsMake(0, -space/2.0, 0, space/2.0);
labelEdgeInset = UIEdgeInsetsMake(0, space/2.0, 0, -space/2.0);
case .ButtonEdgeInsetsStyleBottom:
imageEdgeInset = UIEdgeInsetsMake(0, 0, -labelHeight-space/2.0, -labelWidth)
labelEdgeInset = UIEdgeInsetsMake(-imageHeight!-space/2.0, -imageWith!, 0, 0)
case .ButtonEdgeInsetsStyleRight:
// To Do print(" ====\(labelWidth)=====\(space)")
imageEdgeInset = UIEdgeInsetsMake(0, labelWidth+space/2.0, 0, -labelWidth-space/2.0)
labelEdgeInset = UIEdgeInsetsMake(0, -imageWith!-space/2.0, 0, imageWith!+space/2.0)
}
self.titleEdgeInsets = labelEdgeInset
self.imageEdgeInsets = imageEdgeInset
}
}