1.10-屏幕适配

 

@masonry使用

  注意点

   1masonry布局自定义控件的子控件,外面使用这个自定义控件,若用frame固定布局,有时是无效的,必须用仍然用

     masony

   2若tableView用masonry布局时,如果再设置表头控件,会布局失败表(可能masonry无法适配复杂的表头)

     若想成功设置表头,应该用frame布局tableView,initWithFramexxxx,但是自定义表头控件如果很复杂就不适合

     用frame

     解决方案:1tableView用frame布局

                   2要做表头的自定义视图,还是用方便的masonry布局

                   3tableView用一个空View做表头,设置好frame后,添加自定义视图为子控件

                    就是让自定义视图以空View为父控件。

     示例代码:

//1设置表头
    //1.1空视图
    UIView *container = [UIView new];
    container.frame = CGRectMake(0, 0, self.view.myWidth, 200);
    self.tableView.tableHeaderView = container;
    //1.2添加自定义视图
    DJTimeView *timeView = [DJTimeView new];
    [container addSubview:timeView];
    [timeView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.mas_equalTo(0);
    }];

 

     

 

 

@注意点

1用masonry,对继承控件,进行重新约束?

 <1用remake方法经常无效,用update更好些

 <2不知为何,无法根据兄弟控件进行约束,只能根据父控件进行约束,所以只能这样写很多数字值了 

     [self.iconBtn mas_updateConstraints:^(MASConstraintMaker *make)
     {
         make.left.mas_equalTo(10);
         make.top.mas_equalTo(15);
         make.width.mas_equalTo(44);
         make.height.mas_equalTo(44);
     }];

 

@经验楼

  1自定义控件时,如果子控件有内容,可使用自适应方法,能节省很多约束代码,不过有时无法做精准控制

   eg:  [self.btn2 sizeToFit];  

  2如果自定义控件外部用的是frame固定布局,里面却用masonry布局,有时会导致布局失败

    也就是苹果有时罩不住masonry砖头

  3布局里可以直接用self,不需要weakSelf,因为里面做了一些处理。

 

@错误楼

  1用masonry约束,没有宽高? width 的width写成with,导致宽度总是remake失败

 

posted @ 2017-01-06 12:06  行者烧炉子  阅读(109)  评论(0编辑  收藏  举报