当我在模拟器中运行我的应用程序时,我的表格单元格是正确的长度(iPhone 5s)但是当我在iPhone6上运行它时,单元格开始作为整个屏幕宽度但是然后转回到iPhone 5s大小
关于我做错的任何想法?
代码:
override func viewDidLoad() {
super.viewDidLoad()
theTableView.setTranslatesAutoresizingMaskIntoConstraints(false) //Don't forget this line
var leftSideConstraint = NSLayoutConstraint(item: theTableView, attribute: .Left, relatedBy: .Equal, toItem: view, attribute: .Left, multiplier: 1.0, constant: 0.0)
var rightSideConstraint = NSLayoutConstraint(item: theTableView, attribute: .Left, relatedBy: .Equal, toItem: view, attribute: .Right, multiplier: 1.0, constant: 0.0)
view.addConstraints([leftSideConstraint, rightSideConstraint])
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("MySampleCell") as! UITableViewCell
let screenSize: CGRect = UIScreen.mainScreen().bounds
let screenWidth = screenSize.size.width
let screenHeight = screenSize.size.height
theTableView.frame = CGRectMake(0, 0, screenWidth, screenHeight)
cell.frame = CGRectMake(0, 0, screenWidth - 20, 44)
return cell
}
答案 0 :(得分:0)
theTableView.frame = CGRectMake(0, 0, screenWidth, screenHeight)
视图的框架可能在viewDidLoad中配置,通常不会更改。
cell.frame = CGRectMake(0, 0, screenWidth - 20, 44)
如果您只想将单元格的高度设置为44,请设置tableView.estimatedRowHeight = 44.0
或将以下覆盖添加到视图控制器:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return CGFloat(44)
}
答案 1 :(得分:0)
在介绍320px以上的屏幕之前,我已经处理了这段时间。
UITableViewCell子类,并确保覆盖
- (void)layoutSubviews
在那里调用super.layoutSubviews()然后读取帧大小并根据新的帧大小调整其中的任何子元素。
答案 2 :(得分:0)
似乎问题可能与实际的UITableView
有关。您使用的是UITableViewController
,还是在视图中添加了表格?
要使您的视图适应,您不应在代码中使用显式大小。如果手动添加,请设置tableView
的顶部,底部,前导和尾部约束,并在您创建的自定义单元格中执行相同操作。
如果您有任何疑问或有任何疑问,请与我们联系。