在iPhone中,Button 类没有 UIEdgeInsets 属性。但是,您可以通过创建一个 UIButton 的子类并添加 UIEdgeInsets 属性来实现类似的效果。以下是一个简单的示例:
import UIKit
class CustomButton: UIButton {
var contentEdgeInsets: UIEdgeInsets = .zero
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
let rect = bounds.inset(by: contentEdgeInsets)
return rect.contains(point)
}
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
let rect = bounds.inset(by: contentEdgeInsets)
return rect.contains(point) ? self : nil
}
}
然后,您可以在代码中使用 CustomButton 类并设置 contentEdgeInsets 属性:
let button = CustomButton(type: .system)
button.setTitle("Click Me", for: .normal)
button.frame = CGRect(x: 0, y: 0, width: 100, height: 50)
button.contentEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
button.addTarget(self, action: #selector(buttonClicked), for: .touchUpInside)
@objc func buttonClicked() {
print("Button clicked!")
}
这将创建一个具有 10 个点的内边距的按钮,当用户点击按钮时,将调用 buttonClicked 方法。
请注意,这个示例使用了 Swift 语言,但是您也可以使用 Objective-C 语言实现相同的功能。
领取专属 10元无门槛券
手把手带您无忧上云