如何在不使用自动布局的情况下设置 UISegmentedControl 子类的高度?
How to set the height of UISegmentedControl subclass without using auto layout?
我创建了一个 UISegmentedControl
子类,我想将其用作 UITableView
.
的部分 header 视图
我希望自定义 UISegmentedControl
子类的高度为 50pt。
我知道我可以为此创建一个高度限制。但是,在设置高度约束后,如果此分段控件用作 table 视图的 header 部分,则会显示自动布局错误(请参阅 question)。
我尝试通过调用具有适当高度的 init(frame:) 方法来设置高度,但这没有效果。
有没有办法在不使用自动布局的情况下设置 UISegmentedControl
子类的高度?
您可以简单地使用frames
在sectionHeaderView
中设置UISegmentedControl
的size
和position
,即
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = UIView()
let segmentedControl = UISegmentedControl(frame: CGRect(x: 10, y: 10, width: 200, height: 50))
segmentedControl.insertSegment(withTitle: "First", at: 0, animated: false)
segmentedControl.insertSegment(withTitle: "Second", at: 1, animated: false)
segmentedControl.selectedSegmentIndex = 0
view.addSubview(segmentedControl)
return view
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 70
}
截图:
我创建了一个 UISegmentedControl
子类,我想将其用作 UITableView
.
我希望自定义 UISegmentedControl
子类的高度为 50pt。
我知道我可以为此创建一个高度限制。但是,在设置高度约束后,如果此分段控件用作 table 视图的 header 部分,则会显示自动布局错误(请参阅 question)。
我尝试通过调用具有适当高度的 init(frame:) 方法来设置高度,但这没有效果。
有没有办法在不使用自动布局的情况下设置 UISegmentedControl
子类的高度?
您可以简单地使用frames
在sectionHeaderView
中设置UISegmentedControl
的size
和position
,即
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = UIView()
let segmentedControl = UISegmentedControl(frame: CGRect(x: 10, y: 10, width: 200, height: 50))
segmentedControl.insertSegment(withTitle: "First", at: 0, animated: false)
segmentedControl.insertSegment(withTitle: "Second", at: 1, animated: false)
segmentedControl.selectedSegmentIndex = 0
view.addSubview(segmentedControl)
return view
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 70
}
截图: