2015年5月12日 星期二

UITableViewCell selfSize 愛恨情仇

再iOS提供了一項功能叫做selfSize Classes,multi device UI Design變得簡單起來了
不像以往要做一堆 x/y position calculate,真心覺得這是佛心來著

但如果你的開發版本在iOS 8以下你會發現 TableViewCell沒有selfSize作用?!
是的,沒錯! 這是個Apple已承認的Bug, 所以...恩 iOS 8以下cell還是默默地算吧...



但在iOS 8 之後,你會發現到只要相Constraint設好,Cell也會乖乖的排版唷!
(所以iOS 8 以下的使用率趕快降低吧!!!!!!!)

這是篇國外大德寫的文章:selfSize Classes(TableView Cell)

大致上看完應該就會在TableViewCell中使用selfSize了,其中幾個重點:

1. code :
 tableView.estimatedRowHeight = 44;
 tableView.rowHeight = UITableViewAutomaticDimension;

2. set estimatedRowHeight before rowHeight

3. don't call heightForRowAtIndexPath delegate. it'll let selfSize lose effect.

如果你的selfSize Classes沒有成功的話UI應該會是以下幾種情況:
1. cell height = 44 (default cell height)
2. cell height is not currect.

第一種是code沒寫對,要注意一下,可能以上步驟哪裡漏了

第二種的話其實有可能是estimatedRowHeight惹的禍!
像我是開始寫 estimatedRowHeight = 150;

然後我就發現UI出來整個跑掉的感覺,怪怪Der~
後來我就發現了... estimatedRowHeight 隨便設定會讓他整個跑型
因此我就設成預設值:
estimatedRowHeight = 44;

然後TableViewCell就乖乖的不會亂跑版了,其實我也不知道這裡有什麼...問題?

以上,小小心得.


沒有留言:

張貼留言