在 TableView 中给分段控件添加常量

Add constants to segmented controls in TableView

我在 tableView 中添加了一个分段控件。

它横跨了整个屏幕的宽度,如何给它添加左右约束?

故事板中的约束未激活,无法配置。

从外观上看,您已将其添加到 UITableViewController 的 TableHeaderView 中。首先将一个简单的 UIView 作为容器添加到 TableHeaderView 中。您可以将 UISegmentedControl 移动到容器中,此时您将能够定义约束(例如 UISegmentedControl 的前导、尾随、顶部和底部锚点或高度锚点)。

对于容器本身,您必须定义一个高度,确保它可以根据内容的约束适合内容。根据我的经验,TableHeaderViews 在运行时以编程方式更改其高度时效果不佳。然而,这对您当前的情况应该无关紧要。

不要将 UISegmentedControl 直接添加到 tableView,而是将其添加为 tableHeaderView

1. 创建一个单独的 xib 文件并在其中添加一个 UIView 和一个 UISegmentedControl。添加所需的constraints

2. 接下来创建一个 UIView's 子类并将其作为 UIView's class 添加到 xib 文件中,即

class SegmentView: UIView {
    @IBOutlet weak var segmentControl: UISegmentedControl!
}

3. 现在在您的 ViewController 中,添加 SegmentView's 实例作为 tableHeaderView,即

override func viewDidLoad() {
    super.viewDidLoad()
    if let view = Bundle.main.loadNibNamed("SegmentView", owner: self, options: nil)?.first as? SegmentView {
        //configure your view...
        tableView.tableHeaderView = view
    }
}

结果: