2016-02-19 69 views
0

我有一个ScrollView占用整个设备屏幕。动态大小TableView创建AutoLayout问题

这里面ScrollView的存在是底层将持有3个Label S,A TableView下,然后在最后一个View,一个Label

Layout in Story Baord

现在,TableView有项目的未知量被注入到它,我不希望它滚动,所以我重视其高度为NSLayoutContraint动态调整并重新加载一次这些项目已被解析。

这是怎样的数据进来后对表进行调整:

@IBOutlet weak var tableView: UITableView! 
@IBOutlet weak var tableHeight: NSLayoutConstraint! 

var array = [String]() 

let import = self.items!["people"] as? String 

array = import!.componentsSeparatedByString(",") 

let height = CGFloat(self.array.count * 50) 

self.tableHeight.constant = height 

self.tableView.reloadData() 

这是所有良好和花花公子,但问题自带的自动版式和我不断收到错误。我试过以下东西:

  1. 将内部View布局设置为针对ScrollView固定。首先,Xcode在说"Scrollable content size ambiguous for ScrollView",并且在运行它时,没有控制台错误,但是View在动态内容显示下方水平扩展了ScrollView视口和Label

Try number 1

数2所规定:UIScrollView Scrollable Content Size Ambiguity

  • 设置内View被水平居中并与ScrollView.除去暧昧垂直居中内容大小错误(Yay!)和已更正View从运行过ScrollView视口(Yay!),但Label下的动态大小TableView不隐藏(假设它在TableView下),但我现在可以理解地在控制台中出现Unable to simultaneously satisfy constraints.错误。
  • Try number 2

    这些是两种结果我来,但我现在卡住。我已经在Apple文档中检查了关于ScrollViews的步骤,并且确切地遵循了它,但是我认为我遇到了这个问题,因为动态调整大小的TableView或我制作的一些AutoLayout错误。

    任何人都可以帮忙吗?谢谢!

    回答

    1

    你玩弄过使用堆栈视图吗?您应该能够将滚动视图设置为堆栈,并将其他所有内容设置为其他堆栈,然后将其叠加。您可能必须使用X,Y选项,因为拖动会将其拖放到堆栈视图中。

    +1

    你是男人。严重的是,这有助于** BIG TIME **。根据你的建议,我在顶部插入了一个垂直的'StackView',其中包含动态大小的'TableView',然后是一堆'Labels','TableViews'等填充的'Views',并且它完美地工作。 – simplexity

    +0

    @simplexity哦耶我相信它,堆栈的意见将改变你的生活!我不知道我是如何错过所有关于它们的炒作,但是苹果实际上是在说开发者应该从现在开始工作的方式是先做堆栈视图,然后再担心约束。很高兴帮助! =] – 2016-02-19 20:01:01

    0
    use these two lines code in tableview delegate method height for Row 
    
    
    self.tableView.estimatedRowHeight = 44.0; 
    return tableView.rowHeight = UITableViewAutomaticDimension; 
    
    +0

    谢谢,我过去使用过这些,但是他们触发了一个关于零大小表的错误。堆栈视图的接受答案更符合我寻找的解决方案。有关这些线路及其功能的更多信息,我在前面写了一个问题。一探究竟! [UITableView单元格的动态高度问题(Swift)](http://stackoverflow.com/a/30533619/1284269) – simplexity