#import <UIKit/UIKit.h> @interface UIView (Additon) /** * Shortcut for frame.origin.x. * * Sets frame.origin.x = left */ @property (nonatomic) CGFloat left; /** * Shortcut for frame.origin.y * * Sets frame.origin.y = top */ @property (nonatomic) CGFloat top; /** * Shortcut for frame.origin.x + frame.size.width * * Sets frame.origin.x = right - frame.size.width */ @property (nonatomic) CGFloat right; /** * Shortcut for frame.origin.y + frame.size.height * * Sets frame.origin.y = bottom - frame.size.height */ @property (nonatomic) CGFloat bottom; /** * Shortcut for frame.size.width * * Sets frame.size.width = width */ @property (nonatomic) CGFloat width; /** * Shortcut for frame.size.height * * Sets frame.size.height = height */ @property (nonatomic) CGFloat height; /** * Shortcut for frame.origin */ @property (nonatomic) CGPoint origin; /** * Shortcut for frame.size */ @property (nonatomic) CGSize size; @property (nonatomic) CGFloat centerX; @property (nonatomic) CGFloat centerY; - (id)subviewWithTag:(NSInteger)tag; - (UIViewController*)viewController; @end
#import "UIView+Additon.h" @implementation UIView (Additon) /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)left { return self.frame.origin.x; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setLeft:(CGFloat)x { CGRect frame = self.frame; frame.origin.x = x; self.frame = frame; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)top { return self.frame.origin.y; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setTop:(CGFloat)y { CGRect frame = self.frame; frame.origin.y = y; self.frame = frame; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)right { return self.left + self.width; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setRight:(CGFloat)right { if(right == self.right){ return; } CGRect frame = self.frame; frame.origin.x = right - frame.size.width; self.frame = frame; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)bottom { return self.top + self.height; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setBottom:(CGFloat)bottom { if(bottom == self.bottom){ return; } CGRect frame = self.frame; frame.origin.y = bottom - frame.size.height; self.frame = frame; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)centerX { return self.center.x; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setCenterX:(CGFloat)centerX { self.center = CGPointMake(centerX, self.center.y); } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)centerY { return self.center.y; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setCenterY:(CGFloat)centerY { self.center = CGPointMake(self.center.x, centerY); } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)width { return self.frame.size.width; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setWidth:(CGFloat)width { CGRect frame = self.frame; frame.size.width = width; self.frame = frame; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)height { return self.frame.size.height; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setHeight:(CGFloat)height { if(height == self.height){ return; } CGRect frame = self.frame; frame.size.height = height; self.frame = frame; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGPoint)origin { return self.frame.origin; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setOrigin:(CGPoint)origin { CGRect frame = self.frame; frame.origin = origin; self.frame = frame; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (CGSize)size { return self.frame.size; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setSize:(CGSize)size { CGRect frame = self.frame; frame.size = size; self.frame = frame; } /////////////////////////////////////////////////////////////////////////////////////////////////// - (UIView*)descendantOrSelfWithClass:(Class)cls { if ([self isKindOfClass:cls]) return self; for (UIView* child in self.subviews) { UIView* it = [child descendantOrSelfWithClass:cls]; if (it) return it; } return nil; } - (id)subviewWithTag:(NSInteger)tag{ for(UIView *view in [self subviews]){ if(view.tag == tag){ return view; } } return nil; } - (UIViewController*)viewController { for (UIView* next = [self superview]; next; next = next.superview) { UIResponder* nextResponder = [next nextResponder]; if ([nextResponder isKindOfClass:[UIViewController class]]) { return (UIViewController*)nextResponder; } } return nil; } @end