123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 |
- //
- // UIView+ITTAdditions.m
- // Sword
- //
- // Created by Sword on 3/15/12.
- // Copyright (c) 2012 iTotemStudio. All rights reserved.
- //
- #import "UIView+ITTAdditions.h"
- UIInterfaceOrientation ITTInterfaceOrientation() {
- UIInterfaceOrientation orient = [UIApplication sharedApplication].statusBarOrientation;
- return orient;
- }
- CGRect ITTScreenBounds() {
- CGRect bounds = [UIScreen mainScreen].bounds;
- if (UIInterfaceOrientationIsLandscape(ITTInterfaceOrientation())) {
- CGFloat width = bounds.size.width;
- bounds.size.width = bounds.size.height;
- bounds.size.height = width;
- }
- return bounds;
- }
- @implementation UIView (ITTAdditions)
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- - (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)ttScreenX {
- CGFloat x = 0;
- for (UIView* view = self; view; view = view.superview) {
- x += view.left;
- }
- return x;
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- - (CGFloat)ttScreenY {
- 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;
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- - (CGFloat)orientationWidth {
- return UIInterfaceOrientationIsLandscape(ITTInterfaceOrientation())
- ? self.height : self.width;
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- - (CGFloat)orientationHeight {
- return UIInterfaceOrientationIsLandscape(ITTInterfaceOrientation())
- ? 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];
- }
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- - (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);
- }
- - (void)setBorderColor:(UIColor *)borderColor width:(CGFloat)borderWidth
- {
- self.layer.borderColor = borderColor.CGColor;
- self.layer.borderWidth = borderWidth;
- }
- @end
|