zoukankan      html  css  js  c++  java
  • UIViewAdditions(一个非常方便的工具类用它)

              我们在project在,改变或多或少控件的坐标-宽度-高度,然后,经常看到你的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
    

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    sql中添加唯一索引(非主键)
    Ubuntu 安装 LAMP 主机之后运行出现乱码
    编写安全 PHP 应用程序的七个习惯
    首先在服务器上安装ssh的服务器端
    php安全简析
    正确的Linux菱形乱码修改方法
    php安全
    变量作用域
    bind9 详细解析
    DNS和DHCP服务器
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4666664.html
Copyright © 2011-2022 走看看