Skip to content

Instantly share code, notes, and snippets.

@mschulkind
Created October 5, 2011 05:53
Show Gist options
  • Save mschulkind/1263748 to your computer and use it in GitHub Desktop.
Save mschulkind/1263748 to your computer and use it in GitHub Desktop.
static char clickTargetScaleKey;
static char clickTargetWidthKey;
static char clickTargetHeightKey;
BOOL pointInsideWithEvent(
UIView* self, SEL _cmd, CGPoint point, UIEvent* event) {
NSNumber* clickTargetScaleNumber =
objc_getAssociatedObject(self, &clickTargetScaleKey);
assert(clickTargetScaleNumber);
float clickTargetScale = [clickTargetScaleNumber floatValue];
CGRect clickBounds = self.bounds;
float newWidth = clickBounds.size.width * clickTargetScale;
float newHeight = clickBounds.size.height * clickTargetScale;
clickBounds.origin.x -= (newWidth - clickBounds.size.width)/2;
clickBounds.origin.y -= (newHeight - clickBounds.size.height)/2;
clickBounds.size.width = newWidth;
clickBounds.size.height = newHeight;
// Use height/width overrides if set.
NSNumber* clickTargetWidth =
objc_getAssociatedObject(self, &clickTargetWidthKey);
if (clickTargetWidth) {
clickBounds.size.width = [clickTargetWidth floatValue];
}
NSNumber* clickTargetHeight =
objc_getAssociatedObject(self, &clickTargetHeightKey);
if (clickTargetHeight) {
clickBounds.size.height = [clickTargetHeight floatValue];
}
return CGRectContainsPoint(clickBounds, point);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment