[英]How to get the width of the Custom TableviewCell using Autolayout and Size Classes
我在Storyboard
使用“任意大小”,並為UITableViewCell
定義了以下約束,
當我打印UITableViewCell
的框架時對於所有尺寸的iPhone,我都會獲得框架尺寸
BookTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BookTableViewCellID"];
if (cell==nil) {
cell = [[BookTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"BookTableViewCellID"];
}
NSLog(@"TextView Cell Frame %@ ",NSStringFromCGRect( cell.contentView.frame));
然后輸出textView單元格框架{{0,0},{600,44}}。 此處的寬度為600,與“任意尺寸”的寬度相同。
但是對於iPhone5,我希望此處的寬度為320。如何獲得UITableViewCell
的自動調整寬度。
我想我剛剛遇到了類似的問題,並且我想已經解決了。
我的問題源於將最初在iOS 6的XCode 4.7中設置的Storyboard轉換為iOS 9的xCode 7(我收集的內容與xCode 6和iOS 8相同)。 使用“模擬度量”中的舊iPhone特定尺寸,一切工作都很好,但是當將新的“自動布局”的所有內容轉換為600x600大小時,我遇到了類似的問題。
我已正確調整了所有子視圖的大小和間距,但是我添加到自定義UITableViewCells中的框架繪制不正確:左邊距正確,高度也正確,但是該框架是從屏幕右側繪制的。 麻煩的是,單元中的所有子視圖(UILabel和UISwitch)都在正確的位置繪制。
這使我意識到,就像OP一樣,我在cellForRowAtIndexPath中添加了繪制框架的子層。 顯然,在新的Autolayout中具有600x600尺寸的模板的情況下,在dequeReusableCellWithIdentifier之后尚未設置UITableViewCell的寬度,但稍后進行設置。 這使我意識到,我們可能不應該在cellForRowAtIndexPath中做任何涉及單元格尺寸的事情,而只是設置屬性而已,除非我完全不了解這一點。
解決方案:實現UITableViewCell的子類,並在drawRect中完成所有繪圖。 到那時,所有約束都應正確設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.