[英]Dynamic height in cell Issue in iPhone6 and iPhone6 plus
我正在實現一個功能,其中我的單元格的所有標簽都已根據包含每個標簽的文本進行了調整。我已經在RayWanderlich教程的幫助下實現了這一功能,並且它適用於iOS 4的iPhone 4s,5和5s。 如下圖所示,其中顯示了帶有iOS 8.1的iPhone 5s模擬器
當我用iPhone 6或iPhone 6運行我的應用程序時,我得到了意想不到的行為,如下圖所示,顯示了iPhone 6模擬器
和iPhone 6 plus模擬器 。
我創建了兩個自定義單元格nib文件,一個用於iPhone 4,4s,5和5s,第二個用於iPhone 6和6 plus。 由於我是自動布局的新手,我設置了兩個筆尖相同的約束。 我正在下面的圖像中顯示具有設置約束的自定義單元格nib文件。
iPhone 4,4s,5和5s nib文件快照
iPhone 6和iPhone 6以及自定義單元格nib文件快照
我還使用了以下代碼片段,其中單元格已使用動態高度調整大小。 該代碼適用於iPhone iPhone 4(適用於iOS 7),4s,5和5s(適用於iOS 7和iOS 8和8.1),但不適用於iPhone 6和iPhone 6 plus。
代碼片段
- (CGFloat)calculateHeightForConfiguredSizingCell_3:(MemberListTableViewCell_WithoutImage_3_iPhone *)sizingCell {
sizingCell.bounds = CGRectMake(0.0f, 0.0f, CGRectGetWidth(self.tblView.frame), CGRectGetHeight(sizingCell.bounds));
[sizingCell setNeedsLayout];
[sizingCell layoutIfNeeded];
CGSize size = [sizingCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
//CGSize size = [sizingCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize withHorizontalFittingPriority:UILayoutPriorityDefaultHigh verticalFittingPriority:UILayoutPriorityDefaultHigh];
return size.height + 1.0f; // Add 1.0f for the cell separator height
}
如果我出錯了,請給我一個合適的解決方案。我已經瀏覽了很多東西,但無法正確解決這個問題。 你的幫助會很明顯。謝謝你。
根據你在iPhone6,6 Plus中的單元格高度問題,你需要寫下面的行。
tableView.estimatedRowHeight = 44.0
tableView.rowHeight = UITableViewAutomaticDimension
使用自動布局參考的動態單元大小: http : //www.appcoda.com/self-sizing-cells/
有沒有理由為同一個細胞提供兩種不同的xib? AutoLayout的重點是單個布局可以足夠靈活,以支持所有屏幕尺寸。
使用自動調整大小時,要記住的關鍵事項是:
tableView.estimatedRowHeight = <estimated_value>
tableView.rowHeight = UITableViewAutomaticDimension
UITableViewCell
子類內部有一個非模糊的布局,所有元素都是.contentView
子視圖 您的布局看起來非常適合UIStackView
。 我建議使用包含3個標簽的垂直UIStackView
。 然后是一個包含前一個UIStackView
和UIImageView
的水平UIStackView
。 您需要創建的唯一NSLayoutConstraints
將外部UIStackView
固定到.contentView
所有方面
有關UIStackViews
更多信息,請查看我的博客文章:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.