如何在不使用自动布局的情况下设置 UISegmentedControl 子类的高度?

Posted

技术标签:

【中文标题】如何在不使用自动布局的情况下设置 UISegmentedControl 子类的高度?【英文标题】:How to set the height of UISegmentedControl subclass without using auto layout? 【发布时间】:2019-05-20 11:46:55 【问题描述】:

我创建了一个UISegmentedControl 子类,我想将其用作UITableView 的部分标题视图。

我希望自定义 UISegmentedControl 子类的高度为 50pt。

我知道我可以为此创建一个高度约束。但是,在设置了高度约束之后,如果这个分段控件被用作 table view 的 section header,则会显示自动布局错误(参见question)。

我尝试通过调用具有适当高度的 init(frame:) 方法来设置高度,但这没有效果。

有没有办法在不使用自动布局的情况下设置UISegmentedControl 子类的高度?

【问题讨论】:

【参考方案1】:

您可以简单地使用framessectionHeaderView 中设置UISegmentedControlsizeposition,即

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 子类的高度?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用自动收缩的情况下使用不同 iPhone 尺寸的自动布局更改字体大小 [重复]

如何让 UICollectionView 在不离开屏幕的情况下使用自动布局填充其包含滚动视图的宽度?

如何在不使用自动布局的情况下以 XIB/故事板大小查看手机尺寸

调整 UIButton 宽度/高度 (iOS) - 如何在不禁用自动布局的情况下解决?

具有自动布局的多行UILabel,如何在不更改标签框架的情况下根据内容调整字体大小?

在不使用自动布局的情况下调整 iPhone 5 屏幕尺寸