UITableViewController布局无法正常工作

时间:2017-07-09 17:16:58

标签: ios swift uitableview

我正在尝试将UITableView放置在应用程序的左侧,整个高度,但只使用可用宽度的1/3,代码如下:

class ViewController: UIViewController {
    var tableController: UITableViewController?

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        tableController = UITableViewController();

        addChildViewController(tableController!)
        self.view.addSubview(tableController!.view)
        tableController!.didMove(toParentViewController: self)
    }

    override func viewDidLayoutSubviews() {
        tableController!.view.backgroundColor = UIColor.red

        tableController!.view.frame = CGRect(
            x: 0,
            y: 0,
            width: view.bounds.width / 3,
            height: view.bounds.height);

        //tableController!.view.frame = view.bounds
    }
}

它看起来像这样:

broken layout

我不明白为什么线条没有正确地水平对齐,看起来像是在右边切割。

如果我通过取消注释最后一行给视图控制器的全宽度/高度,它看起来更好:

working layout

1 个答案:

答案 0 :(得分:0)

问题1

您是否在父视图中正确约束TableView?您可以设置比例约束。请参阅有关主题的帖子:AutoLayout to keep view sizes proportional

旁注

对于iOS 11,将视图约束到布局指南会在IDE中触发警告。考虑将UI组件嵌入到另一个视图中,该视图使用自动调整大小的蒙版占用父视图的整个宽度。请参阅此处的主题:Xcode Auto Layout Resizing Issue