【问题标题】:How to change the height of the UISegmentedControl? [duplicate]如何更改 UISegmentedControl 的高度? [复制]
【发布时间】: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 不喜欢手动调整大小,它的高度不在您的控制之下。最好使用 MultiSelectSegmentedControlBetterSegmentedControl 之类的替代方法。

标签: ios swift uitableview uisegmentedcontrol


【解决方案1】:

与此相同的问题: iOS: change the height of UISegmentedcontrol

顺便说一句,你也可以通过改变视图变换来改变比例。

var segmentedControl = UISegmentedControl(frame: CGRect(x: 0, y: 0, width: w, height: h))
segmentedControl.transform = CGAffineTransform(scaleX: x, y: y)

【讨论】:

    【解决方案2】:

    只需将frame 设置为tableView.tableHeaderView。不要使用约束。

    tableView.tableHeaderView?.frame.size.height = 50
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2018-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-15
        • 1970-01-01
        • 2016-05-22
        • 2012-01-15
        • 2017-05-23
        相关资源
        最近更新 更多