【发布时间】:2020-01-06 09:20:14
【问题描述】:
我在UITableView 中使用UISegmentedControl 如下-
let segmentedControl = UISegmentedControl(items: ["Segment1", "Segment2"])
tableView.tableHeaderView = segmentedControl
上面的代码按预期工作。我想改变UISegmentedControl 的高度。我尝试对UISegmentedControl 设置高度限制,如下所示-
let segmentedControl = UISegmentedControl(items: ["Segment1", "Segment2"])
segmentedControl.translatesAutoresizingMaskIntoConstraints = false
segmentedControl.heightAnchor.constraint(equalToConstant: 50).isActive = true
tableView.tableHeaderView = segmentedControl
运行上述代码时,UISegmentedControl 的高度设置为预期的自定义高度。但是,UISegmentedControl 的前缘和后缘不会与UITableView 的前缘和后缘对齐。
我还尝试创建自定义UISegmentedControl 来指定UISegmentedControl 的高度而不设置高度约束,如下所示-
class CustomSegmentedControl: UISegmentedControl {
override var intrinsicContentSize: CGSize {
return CGSize(width: super.intrinsicContentSize.width, height: 50)
}
}
上面的代码没有按预期工作。谁能指出如何设置UISegmentedControl 的高度,使其在UITableView 中使用时显示为预期?
【问题讨论】:
-
有一些类,如 UISwitch,会强制它们的尺寸,分段控制可能是其中之一,您最好的办法可能是重新创建它以适合您的设计。
-
UISegmentedControl 不喜欢手动调整大小,它的高度不在您的控制之下。最好使用 MultiSelectSegmentedControl 或 BetterSegmentedControl 之类的替代方法。
标签: ios swift uitableview uisegmentedcontrol