我有一个UILabel,我给它附加了触摸、缩放和旋转手势。我遇到的问题是,它只有几个字符,这使得它很难旋转/捏/触摸。是否有一种方法,我可以添加边距到UILabel或添加一些区域周围的UILabel将触发旋转/捏/触摸操作,使其更容易操作?
下面是一个方法的例子:
- (IBAction)handlePinch:(UIPinchGestureRecognizer *)recognizer {
recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
currentAction = TEXT_STRETCHING;
recognizer.scale = 1;
}
您的问题有许多解决方案:
- 将手势添加到另一个更大的视图。
- 如果你的标签文本是居中,你可以使标签本身更宽,外观将保持原样。 你可以创建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会更好,但这种技术可能仍然有帮助。