4

UIButtonの背景画像を設定し、タイトルを付けました(setBackgroundImage方法 notを使用しましたsetImage)。UIButton今、背景画像を押し出さずに、hitTest 領域を拡張したいと考えています。

これどうやってするの?

4

5 に答える 5

6

これを行うよりクリーンな方法は、pointInside をオーバーライドすることです。

Swift バージョンは次のとおりです。

override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool {
    let expandedBounds = CGRectInset(self.bounds, -15, -15)
    return CGRectContainsPoint(expandedBounds, point)
}
于 2014-11-24T07:18:47.043 に答える
1

さて、UIButton を拡張して、UIView の hitTest メソッドをオーバーライドできます。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    int expandMargin = 20;
    CGRect extendedFrame = CGRectMake(0 - expandMargin , 0 - expandMargin , self.bounds.size.width + (expandMargin * 2) , self.bounds.size.height + (expandMargin * 2));
    return (CGRectContainsPoint(extendedFrame , point) == 1) ? self : nil;
}
于 2012-09-06T10:14:43.897 に答える