如何在iOS7上支持自定义单元格? [英] How do I support self sizing cells on iOS7?
问题描述
随着iOS8的发布,我设计了我的桌面视图,细胞利用了自我调整大小的细胞。但我也需要我的表在iOS7中工作。我怎么做?有没有办法检查运行时是否支持自调整单元格,还是可以在我的控制器中实现一些不会在iOS7中调用的表委托方法?
With the release of iOS8 I have designed my table view with cells taking advantage of self sizing cells. But I need my tables to work in iOS7 as well. How do I do that? Is there a way to check whether self sizing cells is supported or not in runtime, or can I implement some table delegate methods in my controller which will not be called in iOS7?
如果我在iOS7中使用自调整大小单元尝试我的表格,我会在控制台上出现错误,如下所示:
If I try my table with self sizing cells in iOS7 I get errors on the console like this:
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x7fc912d1d5a0 V:|-(>=11)-[UILabel:0x7fc912d13900] (Names: '|':UITableViewCellContentView:0x7fc912d13400 )>",
"<NSLayoutConstraint:0x7fc912d1d6b0 V:[UILabel:0x7fc912d13900]-(11)-| (Names: '|':UITableViewCellContentView:0x7fc912d13400 )>",
"<NSAutoresizingMaskLayoutConstraint:0x7fc912d24d80 h=--& v=--& V:[UITableViewCellContentView:0x7fc912d13400(0.5)]>"
)
推荐答案
这是我到目前为止找到的解决方案,但是它需要检查特定的版本号而不是功能。如果您的iOS 8或更高版本为版本,则只设置 UITableViewAutomaticDimension
:
This is the solution I have found thus far, but it requires checking for specific version number rather than capability. You only set UITableViewAutomaticDimension
if you have iOS 8 or higher as version:
override func viewDidLoad() {
if NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1 {
self.tableView.estimatedRowHeight = 80
self.tableView.rowHeight = UITableViewAutomaticDimension
}
}
对于iOS 7,您需要计算每个单元格的高度。但如果您使用的是iOS 8,则可以返回 UITableViewAutomaticDimension
作为高度:
For iOS 7 you need to calculate a height for each cell. But if you are on iOS 8 you can return UITableViewAutomaticDimension
as the height:
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1 {
return UITableViewAutomaticDimension
}
return 50 // Or whatever calculated value you need for cell height
}
这篇关于如何在iOS7上支持自定义单元格?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!