增加UILabel的触摸手势区域



我有一个UILabel,我给它附加了触摸、缩放和旋转手势。我遇到的问题是,它只有几个字符,这使得它很难旋转/捏/触摸。是否有一种方法,我可以添加边距到UILabel或添加一些区域周围的UILabel将触发旋转/捏/触摸操作,使其更容易操作?

下面是一个方法的例子:

- (IBAction)handlePinch:(UIPinchGestureRecognizer *)recognizer {
    recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
    currentAction = TEXT_STRETCHING;
    recognizer.scale = 1;
}

您的问题有许多解决方案:

  1. 将手势添加到另一个更大的视图。
  2. 如果你的标签文本是居中,你可以使标签本身更宽,外观将保持原样。
  3. 你可以创建UILabel的子类并覆盖hitTest方法。这样可以增加手势识别的面积自定义视图:

CustomLabel.m:

@implementation CustomLabel: UILabel 
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
    CGRect bigRect = CGRectInset(self.bounds, -10, -10);
    return CGRectContainsPoint(bigRect, point);
}
@end

显然,您可以自定义dx和dy的插入值以满足您的需要。

关于这个方法的更多细节在这里:https://developer.apple.com/reference/uikit/uiview/1622533-pointinside?language=objc

故事板/xib

设置CustomLabel类而不是UILabel

ViewController.m:

一切保持原样。你的handlePinch:方法很好。

注:也许坚持使用UIButton而不是UILabel会更好,但这种技术可能仍然有帮助。

最新更新