1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- //
- // UIButton+HXExtension.m
- // HXPhotoPickerExample
- //
- // Created by Silence on 17/2/16.
- // Copyright © 2017年 Silence. All rights reserved.
- //
- #import "UIButton+HXExtension.h"
- #import <objc/runtime.h>
- @implementation UIButton (HXExtension)
- static char topNameKey;
- static char rightNameKey;
- static char bottomNameKey;
- static char leftNameKey;
- - (void)hx_setEnlargeEdgeWithTop:(CGFloat)top right:(CGFloat)right bottom:(CGFloat)bottom left:(CGFloat)left
- {
- objc_setAssociatedObject(self, &topNameKey, [NSNumber numberWithFloat:top], OBJC_ASSOCIATION_COPY_NONATOMIC);
- objc_setAssociatedObject(self, &rightNameKey, [NSNumber numberWithFloat:right], OBJC_ASSOCIATION_COPY_NONATOMIC);
- objc_setAssociatedObject(self, &bottomNameKey, [NSNumber numberWithFloat:bottom], OBJC_ASSOCIATION_COPY_NONATOMIC);
- objc_setAssociatedObject(self, &leftNameKey, [NSNumber numberWithFloat:left], OBJC_ASSOCIATION_COPY_NONATOMIC);
- }
- - (CGRect)enlargedRect{
- NSNumber* topEdge = objc_getAssociatedObject(self, &topNameKey);
- NSNumber* rightEdge = objc_getAssociatedObject(self, &rightNameKey);
- NSNumber* bottomEdge = objc_getAssociatedObject(self, &bottomNameKey);
- NSNumber* leftEdge = objc_getAssociatedObject(self, &leftNameKey);
-
- if (topEdge && rightEdge && bottomEdge && leftEdge){
- return CGRectMake(self.bounds.origin.x - leftEdge.floatValue,
- self.bounds.origin.y - topEdge.floatValue,
- self.bounds.size.width + leftEdge.floatValue + rightEdge.floatValue,
- self.bounds.size.height + topEdge.floatValue + bottomEdge.floatValue);
- } else{
- return self.bounds;
- }
- }
- - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
- CGRect rect = [self enlargedRect];
-
- if (CGRectEqualToRect(rect, self.bounds)){
- return [super pointInside:point withEvent:event];
- }else{
- return CGRectContainsPoint(rect, point);
- }
- }
- @end
|