ios - 如何更改 UISegmentedControl 的高度?

标签 ios swift uitableview uisegmentedcontrol

<分区>

我在 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 中使用时显示为预期值?

最佳答案

通过设置 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
}

关于ios - 如何更改 UISegmentedControl 的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57772158/

相关文章:

ios - Swift Playgrounds 以不同速度运行时崩溃

json - 使用 Swift 从 JSON 数组填充 UITableView

ios 8 swift - 如何使用单独的数据源为 tableview 添加页脚

ios - 休息套件 0.20 : POST CoreData relationship with Foreign-Key

ios - 我如何使用在 main.storyboard 中创建的原型(prototype)单元格数组填充正确的 swreveal View Controller

ios - UITableViewCell 不会在 swift 中保持突出显示

ios - 滚动 UITableView 时单元格消失并重新出现

ios - 加载 UISearchController 时自动显示键盘

ios - 使用 iAd 和 SpriteKit 创建全屏广告 (iOS)

iphone - IOS 4.3 如何正确解析来自 Web 服务的 Json 响应并将其绑定(bind)到 UITABLEVIEW