Ios 如何调整UITableView的大列表大小以适应所有内容而不滚动?
我有一个UITableView,里面至少有60个单元格,需要调整而不是滚动。我怎样才能使它合身?我已经试过:Ios 如何调整UITableView的大列表大小以适应所有内容而不滚动?,ios,objective-c,xcode,uitableview,Ios,Objective C,Xcode,Uitableview,我有一个UITableView,里面至少有60个单元格,需要调整而不是滚动。我怎样才能使它合身?我已经试过: CGRect frame = self.tableView.frame; frame.size.height = self.tableView.contentSize.height; self.tableView.frame = frame; 正如在这个回答中所说的,但是在评论中提到,它不能用于非常大的列表,你可以知道,因为反弹将显示更多的单元格。没有为此提供解决方案。如何解决此问题
CGRect frame = self.tableView.frame;
frame.size.height = self.tableView.contentSize.height;
self.tableView.frame = frame;
正如在这个回答中所说的,但是在评论中提到,它不能用于非常大的列表,你可以知道,因为反弹将显示更多的单元格。没有为此提供解决方案。如何解决此问题?显而易见的解决方案是不使用UITableView。您可以通过编程或在xib中创建contentView作为普通视图,然后将其添加到主视图,并使用constraint将其连接到上一个自定义视图。我已经做过多次了,效果很好
var lastView: UIView? = nil
for item in model.items {
var customView: CustomContentView
let objects = NSBundle.mainBundle().loadNibNamed("CustomContentView", owner: self, options: nil)
customView = objects.first! as! CustomContentView
customView.translatesAutoresizingMaskIntoConstraints = false
customView.setItemModel(item)
viewWrap.addSubview(customView)
viewWrap.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[customView]|", options: [], metrics: nil, views: ["customView": customView]))
if lastView == nil {
viewWrap.addConstraint(NSLayoutConstraint(item: customView, attribute: .Top, relatedBy: .Equal, toItem: viewWrap, attribute: .Top, multiplier: 1, constant: 0))
} else {
viewWrap.addConstraint(NSLayoutConstraint(item: customView, attribute: .Top, relatedBy: .Equal, toItem: lastView!, attribute: .Bottom, multiplier: 1, constant: 0))
}
lastView = customView
}
if lastView != nil {
viewWrap.addConstraint(NSLayoutConstraint(item: viewWrap, attribute: .Bottom, relatedBy: .Equal, toItem: lastView!, attribute: .Bottom, multiplier: 1, constant: 17))
}
然后,如果自定义视图太多,只需确保自定义视图可以调整大小以适应屏幕。我认为你有一些最大限度,他们都可以适应。如果没有,则需要将其添加到滚动视图中 显而易见的解决方案是不使用UITableView。您可以通过编程或在xib中创建contentView作为普通视图,然后将其添加到主视图,并使用constraint将其连接到上一个自定义视图。我已经做过多次了,效果很好
var lastView: UIView? = nil
for item in model.items {
var customView: CustomContentView
let objects = NSBundle.mainBundle().loadNibNamed("CustomContentView", owner: self, options: nil)
customView = objects.first! as! CustomContentView
customView.translatesAutoresizingMaskIntoConstraints = false
customView.setItemModel(item)
viewWrap.addSubview(customView)
viewWrap.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[customView]|", options: [], metrics: nil, views: ["customView": customView]))
if lastView == nil {
viewWrap.addConstraint(NSLayoutConstraint(item: customView, attribute: .Top, relatedBy: .Equal, toItem: viewWrap, attribute: .Top, multiplier: 1, constant: 0))
} else {
viewWrap.addConstraint(NSLayoutConstraint(item: customView, attribute: .Top, relatedBy: .Equal, toItem: lastView!, attribute: .Bottom, multiplier: 1, constant: 0))
}
lastView = customView
}
if lastView != nil {
viewWrap.addConstraint(NSLayoutConstraint(item: viewWrap, attribute: .Bottom, relatedBy: .Equal, toItem: lastView!, attribute: .Bottom, multiplier: 1, constant: 17))
}
然后,如果自定义视图太多,只需确保自定义视图可以调整大小以适应屏幕。我认为你有一些最大限度,他们都可以适应。如果没有,则需要将其添加到滚动视图中 请看这个链接,你的意思是60个单元格应该在表格视图中固定而不滚动吗?请看这个链接,你的意思是60个单元格应该在表格视图中固定而不滚动吗?真的没有办法通过UITableView实现吗?如何使用此代码加载数据并设置其样式?谢谢。也许有办法,但不会很简单。加载数据的方式与使用表视图的方式相同,但不是调用reloadData,而是按照答案中所述创建视图。我不知道你所说的样式是什么意思。真的没有办法通过UITableView实现吗?如何使用此代码加载数据并设置其样式?谢谢。也许有办法,但不会很简单。加载数据的方式与使用表视图的方式相同,但不是调用reloadData,而是按照答案中所述创建视图。我不知道你说的造型是什么意思