UIView类的常用扩展<一>

来源:互联网 发布:php新手入门教程 编辑:程序博客网 时间:2024/06/02 12:28

/** *  查找该View的最上层的superViewClass类型的SuperView * *  @param superViewClass 所查找的SuperView的类型 * *  @return 查找到的SuperView */- (UIView *)findSuperViewWithClass:(Class)superViewClass {        UIView *superView = self.superview;    UIView *foundSuperView = nil;        while (nil != superView && nil == foundSuperView) {        if ([superView isKindOfClass:superViewClass]) {            foundSuperView = superView;        } else {            superView = superView.superview;        }    }    return foundSuperView;}


UIView (Utils) .h文件

/** * 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 center.x * * Sets center.x = centerX */@property (nonatomic) CGFloat centerX;/** * Shortcut for center.y * * Sets center.y = centerY */@property (nonatomic) CGFloat centerY;/** * Return the x coordinate on the screen. */@property (nonatomic, readonly) CGFloat screenX;/** * Return the y coordinate on the screen. */@property (nonatomic, readonly) CGFloat screenY;/** * Return the x coordinate on the screen, taking into account scroll views. */@property (nonatomic, readonly) CGFloat screenViewX;/** * Return the y coordinate on the screen, taking into account scroll views. */@property (nonatomic, readonly) CGFloat screenViewY;/** * Return the view frame on the screen, taking into account scroll views. */@property (nonatomic, readonly) CGRect screenFrame;/** * Shortcut for frame.origin */@property (nonatomic) CGPoint origin;/** * Shortcut for frame.size */@property (nonatomic) CGSize size;/** * Return the width in portrait or the height in landscape. */@property (nonatomic, readonly) CGFloat orientationWidth;/** * Return the height in portrait or the width in landscape. */@property (nonatomic, readonly) CGFloat orientationHeight;



UIView (Utils) .m文件


- (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.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;}- (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;}- (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 {    CGRect frame = self.frame;    frame.size.height = height;    self.frame = frame;}- (CGFloat)screenX {    CGFloat x = 0.0f;    for (UIView* view = self; view; view = view.superview) {        x += view.left;    }    return x;}- (CGFloat)screenY {    CGFloat y = 0.0f;    for (UIView* view = self; view; view = view.superview) {        y += view.top;    }    return y;}- (CGFloat)screenViewX {    CGFloat x = 0.0f;    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;}- (CGFloat)orientationWidth {    return UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)    ? self.height : self.width;}- (CGFloat)orientationHeight {    return UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)    ? self.width : self.height;}- (CGPoint)offsetFromView:(UIView*)otherView {    CGFloat x = 0.0f, y = 0.0f;    for (UIView* view = self; view && view != otherView; view = view.superview) {        x += view.left;        y += view.top;    }    return CGPointMake(x, y);}


 




0 0
原创粉丝点击