tableviewheaderview 高度自适应

完全使用约束 使tableviewheaderview 的高度自适应,以后再也不用去计算headerview的高度后再去改变高度了,

demo代码:

#import "ViewController.h"
#import "Masonry.h"
@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>

@end

@implementation ViewController

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 10;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell
    = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
    cell.textLabel.text = [NSString stringWithFormat:@"------------%ld",indexPath.row];
    return cell;
}
- (void)viewDidLoad {
    [super viewDidLoad];
    UILabel *testlable = [[UILabel alloc]init];
    testlable.numberOfLines = 0;
    testlable.font = [UIFont systemFontOfSize:12];
    UIView *headerview = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 10)];
    [headerview addSubview:testlable];

    UITableView *tableview = [[UITableView alloc]init];
    tableview.delegate = self;
    tableview.dataSource = self;
    tableview.rowHeight = 50;
    [self.view addSubview:tableview];

    tableview.tableHeaderView = headerview;
    [testlable mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.mas_equalTo(headerview);
    }];
    [headerview mas_makeConstraints:^(MASConstraintMaker *make) {
        make.width.mas_equalTo(self.view.frame.size.width);
    }];
    [tableview mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.mas_equalTo(self.view);
    }];
    testlable.text = @"测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字===";
    [tableview layoutIfNeeded];
    tableview.tableHeaderView = headerview;
    NSLog(@"----------headerview_frame:%@-------testlable_frame:%@",NSStringFromCGRect(headerview.frame),NSStringFromCGRect(testlable.frame));
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end
时间: 2024-10-27 19:19:14

tableviewheaderview 高度自适应的相关文章

UI_11 自定义UITableViewCell、Cell的高度自适应

UITableViewCell很难满足我们的需求,因此,CustomCell(自定义单元格)至关重要.下面将通过一个例子演示自定义Cell.第二部分演示根据文本内容自适应Label.Cell高度. 第一部分 CustomCell的创建 1.创建DemoTableViewController,继承自UITableViewController,并设置其为window的根视图 AppDelegate.m - (BOOL)application:(UIApplication *)application

谷歌、火狐浏览器下实现JS跨域iframe高度自适应的完美解决方法,跨域调用JS不再是难题!

谷歌.火狐浏览器下实现JS跨域iframe高度自适应的解决方法 导读:今天开发的时候遇到个iframe自适应高度的问题,相信大家对这个不陌生,但是一般我们都是在同一个项目使用iframe嵌套页面,这个ifame高度自适应网上一搜一大把,今天要讲的如何在不同的网站下进行相互的调用跟在同一个网站下是一个效果:例如我在自己的项目里面Iframe  了第一博客的页面  http://www.diyibk.com/   当第一博客的页面高度变化了怎么通知父页面呢? 这个时候在谷歌下肯定是拿不到 ifram

一个定高,一个高度自适应的布局

Problem:父元素内包含两个子元素,一个定高,另一个高度自适应 Ans: <div class="box">    <div class="ele1"></div>    <div class="ele2"></div></div> (1)  .box {      width:200px;      height:300px;      background:red; 

textarea高度自适应问题

textarea中的文字如果过多,就会产生滚动条,一本分文本被遮盖住,不能看到所有的文本. 那么,如何才能让textarea的高度随输入内容多少,可以自动的改变高度呢? 解决思想: 1 利用contenteditable属性,让div变得可以编辑. 优点:方便,简介 缺点:提交数据不方便 2 利用js,动态改变textarea的高度 优点:提交数据很方便 缺点:要写好几段代码 我不禁提出质疑:在设计textarea这个标签的时候,专家们为何不给他一个可以高度自适应的属性呢? 谁能回答我?

textarea 高度自适应(chrome+ie8测试有效)

最近有一个需求,需要让textarea宽度不变,但是高度随着用户的输入高度自适应.由于浏览器版本的不兼容,很多方法通常只能在一个浏览器中起作用. 下面我写了一个小的demo,可以在chrome 和 ie8下正常使用,其他浏览器没有测试过. 第一种方式使用 js+css方式实现 <textarea rows='6' cols='100' style='overflow:scroll;overflow-y:visible;height:96px;width:679px;overflow-x:hidd

uitableviewcell高度自适应笔记

今天看了几篇uitableviewcell高度自适应的文章,大体分为两种方式. 第一种方式,cell里面有label,在cellforrow绘制的时候计算Label的可能高度,并且在此时重新计算cell的高度,然后在heightforrow的时候返回这个cell新的高度.也就是说这些cell全部是计算出来的,根据里面的label的高度(label为contentView).http://blog.csdn.net/swingpyzf/article/details/18093959 第二种方式是

iframe高度自适应

第一次用iframe标签代替ajax异步刷新去做后天管理系统,发现iframe的确是个好东西.但有个最大的问题就是--高度不能自适应,要么设置死,要么用js去动态获取目标资源body的height并改变iframe的height.我们往往使用后者去自适应高度,这样的动态改变也有很多种方法--js和jQuery的.对于有选择强迫症的人来说,选一种通用的就行. HTML部分: 1 <div class="edit-content-iframe"> 2 <iframe sr

元素的高度自适应

网页布局中有时候有的高度需要根据内容调整,所以不能固定,今天就来说说,最小高度自适应 属性:min-height 最小高度,但IE6不识别该属性,height在IE6中类似min-height属性: 以下是解决BUG问题方法: hack1:min-height:value; _height:value;(IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",而firefox两个都不能认识

input高度自适应。

转载:http://www.xuanfengge.com/textarea-on-how-to-achieve-a-high-degree-of-adaptive.html 今天需要些一个回复评论的页面,设计师给的初始界面就是一个只有一行的框.然后当时就想这个交互该怎么实现比较好,然后想起了新浪微博的做法:点击评论,默认显示一行,当输入的文字超过一行或者输入Enter时,输入框的高度会随着改变,直到输入完毕.顿时觉得这个细节做得挺不错的,可以效仿下.下面分享2种实现textarea高度自适应的做