我们在工程中,或多或少的要修改控件的坐标-宽度-高度,于是,经常性的见到大家self.view.frame.origin.x,self.view.frame.size.width.........相当的麻烦,在这里向大家推荐一个比较好的工具类,是UIView的类目,它里面对于求坐标,求高度什么的做了封装,很方便大家调用.
@下载链接:点击这里
@.h
#import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface UIView (TTCategory) @property(nonatomic) CGFloat left; @property(nonatomic) CGFloat top; @property(nonatomic) CGFloat right; @property(nonatomic) CGFloat bottom; @property(nonatomic) CGFloat width; @property(nonatomic) CGFloat height; @property(nonatomic) CGFloat centerX; @property(nonatomic) CGFloat centerY; @property(nonatomic,readonly) CGFloat screenX; @property(nonatomic,readonly) CGFloat screenY; @property(nonatomic,readonly) CGFloat screenViewX; @property(nonatomic,readonly) CGFloat screenViewY; @property(nonatomic,readonly) CGRect screenFrame; @property(nonatomic) CGPoint origin; @property(nonatomic) CGSize size; @property(nonatomic) BOOL visible; /** * Finds the first descendant view (including this view) that is a member of a particular class. */ - (UIView*)descendantOrSelfWithClass:(Class)cls; /** * Finds the first ancestor view (including this view) that is a member of a particular class. */ - (UIView*)ancestorOrSelfWithClass:(Class)cls; /** * Removes all subviews. */ - (void)removeAllSubviews; /** * Calculates the offset of this view from another view in screen coordinates. */ - (CGPoint)offsetFromView:(UIView*)otherView; /** * The view controller whose view contains this view. */ - (UIViewController*)viewController; - (void)addSubviews:(NSArray *)views; @end@.m
#import "UIViewAdditions.h" @implementation UIView (TTCategory) /******************************view是否可见*******************************/ - (BOOL)visible{ return !self.hidden; } - (void)setVisible:(BOOL)visible{ self.hidden = !visible; } /******************************设置View左边x坐标*******************************/ - (CGFloat)left { return self.frame.origin.x; } - (void)setLeft:(CGFloat)x { CGRect frame = self.frame; frame.origin.x = x; self.frame = frame; } /****************************设置View顶部y坐标*********************************/ - (CGFloat)top { return self.frame.origin.y; } - (void)setTop:(CGFloat)y { CGRect frame = self.frame; frame.origin.y = y; self.frame = frame; } /****************************设置View右边x坐标*********************************/ - (CGFloat)right { return self.frame.origin.x + self.frame.size.width; } - (void)setRight:(CGFloat)right { CGRect frame = self.frame; frame.origin.x = right - frame.size.width; self.frame = frame; } /****************************设置View底部y坐标*************************************/ - (CGFloat)bottom { return self.frame.origin.y + self.frame.size.height; } - (void)setBottom:(CGFloat)bottom { CGRect frame = self.frame; frame.origin.y = bottom - frame.size.height; self.frame = frame; } /*****************************设置View的中心坐标********************************/ - (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); } /**************************设置View的宽度***********************************/ - (CGFloat)width { return self.frame.size.width; } - (void)setWidth:(CGFloat)width { CGRect frame = self.frame; frame.size.width = width; self.frame = frame; } /*****************************设置View的高度********************************/ - (CGFloat)height { return self.frame.size.height; } - (void)setHeight:(CGFloat)height { CGRect frame = self.frame; frame.size.height = height; self.frame = frame; } - (CGFloat)screenX { CGFloat x = 0; for (UIView* view = self; view; view = view.superview) { x += view.left; } return x; } - (CGFloat)screenY { CGFloat y = 0; for (UIView* view = self; view; view = view.superview) { y += view.top; } return y; } - (CGFloat)screenViewX { CGFloat x = 0; for (UIView* view = self; view; view = view.superview) { x += view.left; if ([view isKindOfClass:[UIScrollView class]]) { UIScrollView* scrollView = (UIScrollView*)view; x -= scrollView.contentOffset.x; } } return x; } - (CGFloat)screenViewY { CGFloat y = 0; for (UIView* view = self; view; view = view.superview) { y += view.top; if ([view isKindOfClass:[UIScrollView class]]) { UIScrollView* scrollView = (UIScrollView*)view; y -= scrollView.contentOffset.y; } } return y; } - (CGRect)screenFrame { return CGRectMake(self.screenViewX, self.screenViewY, self.width, self.height); } - (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; } - (CGPoint)offsetFromView:(UIView*)otherView { CGFloat x = 0, y = 0; for (UIView* view = self; view && view != otherView; view = view.superview) { x += view.left; y += view.top; } return CGPointMake(x, y); } /* - (CGFloat)orientationWidth { return UIInterfaceOrientationIsLandscape(TTInterfaceOrientation()) ? self.height : self.width; } - (CGFloat)orientationHeight { return UIInterfaceOrientationIsLandscape(TTInterfaceOrientation()) ? self.width : self.height; } */ - (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; } - (UIView*)ancestorOrSelfWithClass:(Class)cls { if ([self isKindOfClass:cls]) { return self; } else if (self.superview) { return [self.superview ancestorOrSelfWithClass:cls]; } else { return nil; } } - (void)removeAllSubviews { while (self.subviews.count) { UIView* child = self.subviews.lastObject; [child removeFromSuperview]; } } - (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; } - (void)addSubviews:(NSArray *)views { for (UIView* v in views) { [self addSubview:v]; } } @end @interface NSString (ParseCategory) - (NSMutableDictionary *)explodeToDictionaryInnerGlue:(NSString *)innerGlue outterGlue:(NSString *)outterGlue; @end @implementation NSString (ParseCategory) - (NSMutableDictionary *)explodeToDictionaryInnerGlue:(NSString *)innerGlue outterGlue:(NSString *)outterGlue { NSArray *firstExplode = [self componentsSeparatedByString:outterGlue]; NSArray *secondExplode; NSInteger count = [firstExplode count]; NSMutableDictionary* returnDictionary = [NSMutableDictionary dictionaryWithCapacity:count]; for (NSInteger i = 0; i < count; i++) { secondExplode = [(NSString*)[firstExplode objectAtIndex:i] componentsSeparatedByString:innerGlue]; if ([secondExplode count] == 2) { [returnDictionary setObject:[secondExplode objectAtIndex:1] forKey:[secondExplode objectAtIndex:0]]; } } return returnDictionary; } @end
UIViewAdditions(一个很方便使用的工具类吧),布布扣,bubuko.com
原文地址:http://blog.csdn.net/hmt20130412/article/details/31779333