Ios 如何调整UITableView的大列表大小以适应所有内容而不滚动?

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; 正如在这个回答中所说的,但是在评论中提到,它不能用于非常大的列表,你可以知道,因为反弹将显示更多的单元格。没有为此提供解决方案。如何解决此问题

我有一个UITableView,里面至少有60个单元格,需要调整而不是滚动。我怎样才能使它合身?我已经试过:

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,而是按照答案中所述创建视图。我不知道你说的造型是什么意思