Swift 向TableView中的分段控件添加常量

Swift 向TableView中的分段控件添加常量,swift,xcode,uitableview,uisegmentedcontrol,Swift,Xcode,Uitableview,Uisegmentedcontrol,我在tableView中添加了一个分段控件 它跨越了整个屏幕的宽度,如何在左右两侧添加约束 在序列图像板中,约束未处于活动状态,因此无法对其进行配置。从外观上看,您已将其添加到UITableViewController的TableHeaderView中。首先将一个简单的UIView作为容器添加到TableHeaderView中。您可以将UISegmentedControl移动到容器中,此时您可以定义约束(例如UISegmentedControl的前导、尾随、顶部和底部锚定或高度锚定) 对于容器本

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

它跨越了整个屏幕的宽度,如何在左右两侧添加约束


在序列图像板中,约束未处于活动状态,因此无法对其进行配置。

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


对于容器本身,您必须定义一个高度,确保它能够根据内容的约束来适应内容。根据我的经验,TableHeaderViews在运行时以编程方式更改其高度时效果不佳。但是,这对于您当前的场景来说并不重要。

与其将
UISegmentedControl
直接添加到
tableView
,不如将其添加为
tableHeaderView

1.创建一个单独的
xib
文件,并添加一个
UIView
,其中包含
UISegmentedControl
。向其添加所需的
约束

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

class SegmentView: UIView {
    @IBOutlet weak var segmentControl: UISegmentedControl!
}
3.现在在您的
视图控制器中,添加
分段视图的
实例作为
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
    }
}
结果:


您是否在tableView中添加了segmentControl?是的,您无法在那里给出约束。是否希望segmentControl成为tableView的一部分?有这样的具体要求吗?