2016-02-19 68 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