tableHeaderView的Masonry

原创 2016年08月29日 11:56:34

tableHeaderView的Masonry

    UIView *headView =[UIView new];
    headView.backgroundColor = [UIColor yellowColor];

    UIView *view1 =[UIView new];
    view1.backgroundColor =[UIColor redColor];
    [headView addSubview:view1];
    [view1 makeConstraints:^(MASConstraintMaker *make) {
        make.top.left.equalTo(10);
        make.right.equalTo(-10);
        make.height.equalTo(100);
    }];

    UIView *view2 =[UIView new];
    view2.backgroundColor =[UIColor blackColor];

    UILabel *label = [[UILabel alloc] init];
    [label setNumberOfLines:0];
    // 计算UILabel的preferredMaxLayoutWidth值,多行时必须设置这个值,否则系统无法决定Label的宽度(*****非常重要*****)
    label.preferredMaxLayoutWidth = ULMainScreenWidth - 20;
    [label setBackgroundColor:[UIColor greenColor]];
    [label setText:@"这样写了之后在7.1里面直接报错Auto Layout still required after executing -layoutSubviews. UITableView's implementation of -layoutSubviews needs to call super. 在8里面没有报错,但是headView并没有显示,按照字面的意思理解就是父视图要重新布局,我觉得应该是tableHeaderView在tableview里面系统应该有自己的布局,在外面设置的话就冲突了,然后报错,也不知道这个理解是不是对的。\n后来stackoverflow上面看了一些问答,基本上是先设置好headView,根据headView的Subview的autolayout计算出高度,然后再高度重新赋值给headView。下面是headView上面有2个子视图,高度各100"];

    [view2 addSubview:label];
    [label makeConstraints:^(MASConstraintMaker *make) {
        make.top.left.right.equalTo(0);
        make.bottom.equalTo(view2);
    }];

    [headView addSubview:view2];
    [view2 makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(view1.bottom).offset(10);
        make.left.right.equalTo(view1);
        make.bottom.equalTo(headView).offset(-10);
    }];

    CGFloat height = [headView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
    CGRect frame = headView.frame;
    frame.size.height = height;
    headView.frame =frame;
    tableView.tableHeaderView = headView;

来自:http://qcliwei.com/2015/08/02/tableHeaderView-autolayout/

http://tutuge.me/2015/08/08/autolayout-example-with-masonry2/

相关文章推荐

使用autolayout设置UITableView的tableHeaderView

网上资料比较少,都没有代码,答案在折腾很久后解决了,也有段时间没有写文章了。 使用Masonry开源框架来写,下面直接贴代码给正在遭受折磨的人     UIView *headView = [[UI...

OC - Masonry的基本使用(tableView作为实例)

随着约束布局的越来越流行,很多项目正在逐步由frame布局转移到约束布局。最近就有几个朋友说道,新项目要求用约束来布局,而用约束来进行布局,Masonry作为一个强大的三方库,就不得不提了。此篇文章,...

iOS开发 masonry 设置tableHeadView

转自:http://www.cnblogs.com/gaox97329498/p/5146965.html       使用到到tableHeadView,一直习惯用masonry来...

iOS 6.0 Masonry自动布局表头/表尾时崩溃解决方案

iOS 6.0 Masonry自动布局表头/表尾时崩溃解决方案 使用Masonry要兼容iOS6.0,正常情况下都是可以的。但是对于UITableView的tableHeaderView或者table...

关于在 UITableView FooterView 中控件宽度设置问题

关于 TableView FooterView 宽度设置问题,简单来说就是一句话先设置一个参考 UIView 然后在参考 UIView 放入你想用的控件或视图!效果图: 代码: //Table...

如何在Autolayout的模式下动态设置 UITableView的 tableHeader 的高度

最近遇到一个 问题,就是使用单独的一个 xib文件 autolayout来创建一个 UITableView的 tableHeader.  这个 xib是一个动态高度的View。       ...

autolayout 设置使用tableviewHeaderView

我们在viewDidLoad中设置 _headerView = [ProfileHeaderView viewWithXib:@"ProfileHeaderView"]; _...

使用Masonry动态设置tableview表头---tableHeaderView(解决表头背景色设置不了问题)

//header     self.headerView =[[UIView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 90)]; ...

Masonry自动计算行高

原文出自:标哥的技术博客 前言还在手动计算UITableViewCell的行高吗?还在每次都因为需求变化一点就要大量调整cell的高度而烦恼吗?现在教大家如何通过Masonry的自动布局来实现自动计算...

TableView的tableHeaderView表头自适应(表头Masonry)

#import "OrderCheckLogisticsPathViewController.h" #import "ConstantHeader.h" #import #import "MB...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tableHeaderView的Masonry
举报原因:
原因补充:

(最多只允许输入30个字)