UIView Additions(一个很方便使用的工具类)

我们在工程中,或多或少的要修改控件的坐标-宽度-高度,于是,经常性的见到大家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
</uikit></foundation>
@.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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值