圆形矩形按钮是否有一种方法可以获得完全相同的图像大小?

Geo*_*rge 2 iphone xcode objective-c ios ios-simulator

圆形矩形按钮是否有一种方法可以获得完全相同的图像尺寸?是否有任何圆形按钮?我有一个带有许多按钮图像的项目,它们混合在一起.图像大多是圆形的,按钮是矩形的,所以当我把它们放在一起时,它们会混合在一起.

rob*_*off 8

当iPhone检测到屏幕上的触摸时,它会使用"点击测试"找到触摸的视图.默认情况下,命中测试假定每个视图都是一个矩形.

如果您希望命中测试将视图视为不同的形状,则需要创建一个子类(UIButton在您的情况下)并覆盖该pointInside:withEvent:方法以测试您要使用的形状.

例如:

@implementation MyOvalButton

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
    UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:self.bounds];
    return [path containsPoint:point];
}
Run Code Online (Sandbox Code Playgroud)

我还没有测试过那段代码.

Swift版本:

class MyOvalButton: UIButton {

    override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
        return UIBezierPath(ovalIn: bounds).contains(point)
    }
Run Code Online (Sandbox Code Playgroud)

不要忘记MyOvalButton在故事板或xib中设置按钮的自定义类,如果这是您创建按钮的位置.

这是一个演示,我已经连接按钮的触摸和触摸事件,以便在触摸按钮时将背景变为灰色:

演示