2017-10-17 65 views
0

它不會出現可能限制添加到UITableView無法約束的UITableView到安全區域

我想補充的「頂部對齊到:安全區」約束表視圖,因爲你可以看到,細胞不要似乎是安全區域內:

如何約束表視圖留在安全區的範圍之內?

+0

檢查'automaticallyAdjustsScrollViewInsets'和'tableView.contentInsetA djustmentBehavior' peperties。前者應設置爲TRUE;後者比'.never'以外的東西。 –

+0

,你需要一個版本檢查'如果#available(iOS的11.0,*){tableView.contentInsetAdjustmentBehavior = .scrollableAxes}' –

回答

1

似乎你使用UITableViewController。這樣你就沒有辦法改變tableView的默認約束。只有一件事可以做,就是添加一個導航控制器。 (點擊你的UITableViewController比在你的顯示器頂部:編輯器 - >嵌入 - >導航控制器)

另一種方法是將UITableView添加到UIViewController。在這種情況下,你可以添加任何你想要的約束。

請看下面的代碼。這可以幫助你弄清楚接下來應該做什麼。

import UIKit 

class ViewController: UIViewController,UITableViewDataSource, UITableViewDelegate { 

    var data: [String] = ["Cell 1", "Cell 2", "Cell"] 
    var colors: [UIColor] = [.red, .green, .blue] 

    @IBOutlet weak var tableView: UITableView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     tableView.delegate = self 
     tableView.dataSource = self 
     tableView.reloadData() 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "id", for: indexPath) 
     cell.textLabel?.text = data[indexPath.row] 
     cell.contentView.backgroundColor = colors[indexPath.row] 

     return cell 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return data.count 
    } 

    func numberOfSections(in tableView: UITableView) -> Int { 
     return 1 
    } 

} 

最後,您會在下面的截圖中看到類似內容。

P.S.不要忘記給你的原型單元添加標識符。在我的例子標識符爲「ID」

TableView

這裏是所有的Xcode項目的屏幕截圖。

Xcode project

0

我的解決辦法是改變UITableViewController,到UIViewController,和一個UITableView添加到視圖,然後添加頂部,底部,左,右限制。

注意,你會得到一個崩潰,直到您更改類從UIViewController繼承,而不是UITableViewController

@interface MyViewController : UITableViewController 

@interface MyViewController : UIViewController 

你顯然還需要重新鏈接的UITableView,和連接數據源和委託,如果你不這樣做,編程