Files
featherVoice/TUIKit/TUICallKit/TUICallKit-Swift/View/Component/Common/UIButtonCommon.swift
2025-08-08 10:49:36 +08:00

49 lines
2.1 KiB
Swift

//
// UIButtonCommon.swift
// TUICallKit
//
// Created by vincepzhang on 2023/2/10.
//
import Foundation
enum TUIButtonEdgeInsetsStyle {
case TUIButtonEdgeInsetsStyleTop
case TUIButtonEdgeInsetsStyleLeft
case TUIButtonEdgeInsetsStyleBottom
case TUIButtonEdgeInsetsStyleRight
}
extension UIButton {
func layoutButtonWithEdgeInsetsStyle(style: TUIButtonEdgeInsetsStyle, space: CGFloat) {
let imageWidth = imageView?.frame.size.width ?? 0.0
let imageHeight = imageView?.frame.size.height ?? 0.0
let labelWidth = titleLabel?.intrinsicContentSize.width ?? 0.0
let labelHeight = titleLabel?.intrinsicContentSize.height ?? 0.0
var imageEdgeInsets: UIEdgeInsets = .zero
var labelEdgeInsets: UIEdgeInsets = .zero
switch style {
case .TUIButtonEdgeInsetsStyleTop:
imageEdgeInsets = UIEdgeInsets(top: -labelHeight - space / 2.0, left: 0, bottom: 0, right: -labelHeight)
labelEdgeInsets = UIEdgeInsets(top: 0, left: -imageWidth, bottom: -labelHeight - space / 2.0, right: 0)
break
case .TUIButtonEdgeInsetsStyleLeft:
imageEdgeInsets = UIEdgeInsets(top: 0, left: -space / 2.0, bottom: 0, right: space / 2.0)
labelEdgeInsets = UIEdgeInsets(top: 0, left: space / 2.0, bottom: 0 , right: -space / 2.0)
break
case .TUIButtonEdgeInsetsStyleBottom:
imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: -labelHeight - space / 2.0, right: -labelWidth)
labelEdgeInsets = UIEdgeInsets(top: -imageHeight - space / 2.0, left: -imageWidth, bottom: 0 , right: 0)
break
case .TUIButtonEdgeInsetsStyleRight:
imageEdgeInsets = UIEdgeInsets(top: 0, left: labelWidth+space / 2.0, bottom: 0, right: -labelWidth - space / 2.0)
labelEdgeInsets = UIEdgeInsets(top: 0, left: -imageWidth - space / 2.0, bottom: 0 , right: imageWidth + space / 2.0)
break
}
self.titleEdgeInsets = labelEdgeInsets
self.imageEdgeInsets = imageEdgeInsets
}
}