我正在UISegmentedControl
中使用UITableView
,如下所示-
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
中使用时像预期的那样?
答案 0 :(得分:2)
通过设置segmentedControl.translatesAutoresizingMaskIntoConstraints = false
,您将失去默认约束。
如果您对分段控件的外观和布局感到满意,则只想更改其高度,请尝试以下方法:
// probably in
override func viewDidLoad() {
super.viewDidLoad()
let segmentedControl = UISegmentedControl(items: ["Segment1", "Segment2"])
segmentedControl.frame.size.height = 50.0
tableView.tableHeaderView = segmentedControl
}
答案 1 :(得分:0)
只需将frame
设置为tableView.tableHeaderView
。不要使用约束。
tableView.tableHeaderView?.frame.size.height = 50
答案 2 :(得分:0)
与以下问题相同: iOS: change the height of UISegmentedcontrol
b.t.w您还可以通过更改视图变换来更改比例。
var segmentedControl = UISegmentedControl(frame:CGRect(x:0,y:0,width:w,height:h)) segmentedControl.transform = CGAffineTransform(scaleX:x,y:y)