ios - tableViewcell 用autolayout约束的问题?求教
PHP中文网
PHP中文网 2017-04-17 14:24:07
[iOS讨论组]

RT,先上图,第一张是IOS7.1下得界面。第二张是IOS8的界面,虚拟机都是用得4S

第二张是我想要的效果,但是到7.1版本上会有空白,感觉是Cell中contentView没约束好?
下面再补上cell的XIB图,view和相关知识都是固定了宽度
图片描述

"<NSLayoutConstraint:0x7be2e870 V:[UILabel:0x7be29290]-(-0.5)-|   (Names: '|':UITableViewCellContentView:0x7be298c0 )>",
"<NSLayoutConstraint:0x7be2e930 V:[UILabel:0x7be29290]-(0)-|   (Names: '|':UITableViewCellContentView:0x7be298c0 )>"

发现运行时有这种提示,是不是说约束有问题?
PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
迷茫

我最近也在看利用自动布局来让cell调整自己的高度。

以前的做法。

以前的做法是这样的,ios7里封装了一个可以计算label高度的方法(ios6你可以查一下哈)。

  + (CGSize)labelheight:(UILabel *)detlabel
{
    CGSize size = CGSizeMake(SCREENWIDTH - 16, 1000);

    CGSize contentactually = [detlabel.text boundingRectWithSize:size options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) attributes:[NSDictionary dictionaryWithObjectsAndKeys:detlabel.font,NSFontAttributeName,nil] context:nil].size;
    return contentactually;
}

我每次都是根据label的文字来计算cell高度然后在
- (CGFloat)tableView:(UITableView *)atableView heightForRowAtIndexPath:(NSIndexPath *)indexPath方法里返回这个cell的高度。

可行,但是代码量比较多。

新方法-利用自动布局的方式。

在stackoverflow上有一篇文章,推荐你看一下。Using Auto Layout in UITableView for dynamic cell layouts & variable row heights是利用自动布局的方式来自动计算cell的高度,上面有一个ios7的demo和ios8的demo。

题主可以自己看一下。我也尝试了一下,因为在尝试手写约束还没有太明白我就不贴代码了。
最终的效果是

但是第一行的label无法自适应高度。
如果你是利用我第二种办法出现这种问题的话,那么是约束没设置好的问题,你的编译器也提醒你了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号