美文网首页00『 基础知识 』iOS开发技术分享
有趣的分类总结1(UIView+SExtend)

有趣的分类总结1(UIView+SExtend)

作者: 青青草原饲养源与园叮叮叮叮 | 来源:发表于2016-08-18 16:09 被阅读122次

    此分类包括以下的功能:

    • UIView的fram相关属性的获区与设置。
      比如可以这样设置view的x和size代码:

      UIView * view = [UIView new];
      view.left = 20;
      view.size = CGSizeZero;

    • 移除所有子View和获得tag对应的view。
      比如可以这样移除subview

      [view removeAllSubviews];

    • 获得View最近的ViewController。
      比如可以这样获得离View最近的ViewController

      [view viewController];

    • 添加分隔线
      比如在view的底部添加一条分隔线:

      [view addLineBottom];
      这里使用默认颜色和默认线宽。你也可以通过传递参数来定制你自己的添加线的方法。

    import "UIView+SExtend.h"

    import "XCBDefine.h"

    import "Masonry.h"

    import "UIColor+Hex.h"

    @implementation UIView (SExtend)

    • (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.left + self.width;
      }

    • (void)setRight:(CGFloat)right {
      if(right == self.right){
      return;
      }
      CGRect frame = self.frame;
      frame.origin.x = right - frame.size.width;
      self.frame = frame;
      }
      /////////////////////////////////////////

    • (CGFloat)bottom {
      return self.top + self.height;
      }

    • (void)setBottom:(CGFloat)bottom {
      if(bottom == self.bottom){
      return;
      }

      CGRect frame = self.frame;
      frame.origin.y = bottom - frame.size.height;
      self.frame = frame;
      }
      /////////////////////////////////////////

    • (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 {
      if(height == self.height){
      return;
      }

      CGRect frame = self.frame;
      frame.size.height = 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);
      }
      /////////////////////////////////////////

    • (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;
      }

    • (void)removeAllSubviews {
      for(UIView *view in [self subviews]){
      [view removeFromSuperview];
      }
      }

    • (id)subviewWithTag:(NSInteger)tag{
      for(UIView *view in [self subviews]){
      if(view.tag == tag){
      return view;
      }
      }

      return nil;
      }

    • (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;
      }

    pragma mark ---

    /***********************************/

    • (void)addTopAndBottomLine {
      UIView * lineT = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kSizeScreenWidth, 0.5)];
      lineT.backgroundColor = UI_COLOR_RGB(200, 200, 200);
      [self addSubview:lineT];

      UIView * lineB = [[UIView alloc] initWithFrame:CGRectMake(0, self.height - 0.5, self.width, 0.5)];
      lineB.backgroundColor = UI_COLOR_RGB(200, 200, 200);
      [self addSubview:lineB];
      }

    • (void)addLineFormHeight:(CGFloat)height {
      UIView * lineB = [[UIView alloc] initWithFrame:CGRectMake(0, height, self.width, 0.5)];
      lineB.backgroundColor = UIColorFromHex(@"c5c5c5");
      [self addSubview:lineB];
      }

    -(void)addLineBottom{
    UIView * lineB = [UIView new];
    lineB.backgroundColor = UIColorFromHex(@"c5c5c5");
    [self addSubview:lineB];
    [lineB mas_makeConstraints:^(MASConstraintMaker *make) {
    make.height.equalTo(@0.5);
    make.right.left.equalTo(self);
    make.bottom.equalTo(self);
    }];
    }
    @end

    相关文章

      网友评论

      • 西叶lv:楼主,我的Xcode突然打不出[view removeAllSubviews];方法,不知道是不是扩展文件没有了,可以工程可以正常运行……

      本文标题:有趣的分类总结1(UIView+SExtend)

      本文链接:https://www.haomeiwen.com/subject/kimvsttx.html