UIlabel 在 autolayout 情况下在 Cell 不能正常的显示

2016-02-14 21:18:17 +08:00
 90928yao


图 1

图 2
如图所示,用的 autolayout ( mansory ,没用 xib ,约束都是在 initwithstlye 方法中添加的), label 是自定义的(自定义了很多东西比如 padding 这种,比较方便就直接用了)。遇到的问题是第一次显示 cell 的时候都是省略号,只有滑动出屏幕,再出现之后才是正常的。想了很多方法,比如在传入数据源 configurecell 时候调用 setNeedsLayout()但是不起作用。用系统自带的应该没问题,菜鸡想知道这是什么原因导致的(别人的代码用的 xib ,貌似是正常的..我明天仔细看看)

2777 次点击
所在节点    iDev
3 条回复
mornlight
2016-02-14 21:53:16 +08:00
划动出屏幕再出现时会通常更新一次 cell ,具体干了些啥你应该知道。
显示省略号是因为 label 长度不够啊,文字出不来,最直接的可能原因是它的约束写得有问题,把 label 压得太短了。
SeanChense
2016-02-14 21:59:52 +08:00
楼上已经解释得足够详细了。
还想要有进一步的探索就必须放代码了。
juxingzhutou
2016-02-15 08:27:20 +08:00
有可能出问题的原因:
1. 右边界的约束没设置好;
2. 在 heightForRow 中用 systemLayoutSizeFittingSize 推算高度之前没有为 cell 的宽度赋值,对 cell 的 width 赋一个 table view 的宽度即可;
3. label 没有在 bounds 改变时正确地修改自己的 preferredMaxLayoutWidth ,继承 UILabel 并重写对应 setter 方法即可。

具体可参考 Github 上的`forkingdog/UITableView-FDTemplateLayoutCell`的实现。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/256473

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX