forkingdog / UITableView-FDTemplateLayoutCell

Template auto layout cell for automatically UITableViewCell height calculating
MIT License
9.94k stars 2.01k forks source link

10.3 系统,Label高度自适应不行了 #291

Closed leizGit closed 7 years ago

leizGit commented 7 years ago

设置preferredMaxLayoutWidth 可以解决,但是如果是使用自动布局,一般我们不知道Label的宽度

SiTianyu commented 7 years ago

确实,求作者解决

zp18862956943 commented 7 years ago

啊,希望作者能看到啊,10.3的确是无法高度自适应了

lovemo commented 7 years ago

已经有解决方法, 在cell里进行布局之前先对contentView进行约束就可以了,我的是这样解决的 [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self); }];

anyuhao commented 7 years ago

有约束冲突,需要设置preferredMaxLayoutWidth 会报UITableViewCellContentView .width = 375 与 UITableViewCellContentView .width = 0 冲突. 如果返回的高度写死就没有冲突了

somson commented 7 years ago

如果xib布局中设置cell的高度为350,如果[self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self); }];这样解决的话,在iPhone6中会报UITableViewCellContentView .width = 375 与 UITableViewCellContentView .width = 350 冲突.

leizGit commented 7 years ago

@lovemo 设置contentView的约束,label显示没问题,但是其他约束出现了问题

JiaLiangoooo commented 7 years ago

直接在 awakeFromNib 那里 把 preferredMaxLayoutWidth 写进去不可以吗?

ChenYanTao666 commented 7 years ago
ChenYanTao666 commented 7 years ago

if (IOS_VERSION > 10.2) {

  [cell.contentView mas_makeConstraints:^(MASConstraintMaker *make) {
      make.left.mas_equalTo(0).priorityLow();
      make.right.mas_equalTo(0).priorityLow();
  }];

} 重点在这里

zigang commented 7 years ago

@ChenYanTao666 preferredMaxLayoutWidth这个你是怎么设置呢?设置成0?

yansun2006 commented 7 years ago

这么好的库,希望作者能持续更新

leizGit commented 7 years ago

@ChenYanTao666 添加了 if (SystemVersion > 10.2){ [templateLayoutCell.contentView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(0).priorityLow(); make.right.mas_equalTo(0).priorityLow(); }]; } 之后,还是不对,看看下图,上面的间距是有问题,间距被拉大了, 下面的是正常的

wx20170410-114902 2x

只有正确设置文本内容的宽度preferredMaxLayoutWidth值,才显示正常

JiangWenjia commented 7 years ago

相同的问题

JiangWenjia commented 7 years ago

相同的问题

JiangWenjia commented 7 years ago

相同的问题

JiangWenjia commented 7 years ago

相同的问题

JiangWenjia commented 7 years ago

相同的问题

Daren-Wang commented 7 years ago

相同的问题,10.3之后确实失败了

ChenYanTao666 commented 7 years ago

@zigang 不用设置这个,就按照我写的加个在计算高度的方法里面加个约束就行了

huangzhifei commented 7 years ago

对于UILabel多行在10.3及以上版本失效,设置preferredMaxLayoutWidth虽然能达到效果,但是有点坑呀,如果一行只有一个UILabel还好点,对于有多个控件除非固定死了宽度,不然就动态算确实很麻烦呀。

Zysss commented 7 years ago

我试了一下,将templateCell.contentView.translatesAutoresizingMaskIntoConstraints = NO;这个改为YES在10.3就没问题了,不过感觉不太靠谱

hezhixiang commented 7 years ago

上面的方法对没有使用NSMutableAttributedString管用,相反则出问题

shanglina commented 7 years ago

对于有2个或以上的多行label时 , 设置这个preferredMaxLayoutWidth 加上[cell.contentView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(0).priorityLow(); make.right.mas_equalTo(0).priorityLow(); }]; 可以解决

ghost commented 7 years ago

@zysSS 我也这样加了,就正常了。但还是不知道原因。。。 去看了下作者的微博,他好像离开百度了,不知道现在还维不维护了。 也不知道他的邮箱账号多少,不然就可以直接发邮件问

21074223 commented 7 years ago

相同的问题,还是希望作者修改下库

weekwood commented 7 years ago

Will fix in next release

iStarEternal commented 7 years ago

我在cell的布局代码中增加了

[self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(0); make.width.equalTo(self.contentView.superview.mas_width); }];

问题得到了解决

EasonGaoDevelop commented 7 years ago

@iStarEternal 我添这个代码报错

weekwood commented 7 years ago

closed by 9b18d463b61d28d5fc9d28fae011a83e89541294

janicezhw commented 6 years ago

@ChenYanTao666 这样设置警告是没有了,但是复杂cell情况下,会更卡顿。。 看来复杂cell还是不适合用autoLayout来自适应高度。用系统estimatedRowHeight 也会卡,而且内存占用更高