【问题标题】:segementcontrol addUnderlineForSelectedSegment not working in iOS 13segmentcontrol addUnderlineForSelectedSegment 在 iOS 13 中不起作用
【发布时间】:2019-11-05 17:41:44
【问题描述】:
func addUnderlineForSelectedSegment() {
    removeBorder()
    let underlineWidth: CGFloat = self.bounds.size.width / CGFloat(self.numberOfSegments)
    let underlineHeight: CGFloat = 3.0
    let underlineXPosition = CGFloat(selectedSegmentIndex * Int(underlineWidth))
    let underLineYPosition = self.bounds.size.height + 10.0

    let underlineFrame = CGRect(x: underlineXPosition, y: underLineYPosition, width: underlineWidth, height: underlineHeight)
    let underline = UIView(frame: underlineFrame)

    // underline.backgroundColor = UIColor(red: 67/255, green: 129/255, blue: 244/255, alpha: 1.0)
    print("underline:\(underline)")
    underline.backgroundColor = .red
    underline.tag = 1
    self.addSubview(underline)
    didAddSubview(underline)
}

【问题讨论】:

  • 为什么不对选中状态应用下划线文本属性?无需尝试修改视图。与私有 API 作斗争几乎总是一个坏主意。
  • 好的,谢谢,我试试

标签: swift uisegmentedcontrol ios13


【解决方案1】:

我遇到了与您相同的错误。 它适用于旧版本,但不适用于当前的 iOS 13。 花一整天的时间来解决这个愚蠢的事情,然后用一条线来解决所有问题。

尝试在 removeBorder() 之后将 clipsToBounds 设置为 false

func addUnderlineForSelectedSegment(){
    removeBorder()
    clipsToBounds = false
    let underlineWidth: CGFloat = Size.Screen.width / CGFloat(numberOfSegments)
    let underlineHeight: CGFloat = 1.0
    let underlineXPosition = CGFloat(selectedSegmentIndex * Int(underlineWidth))
    let underLineYPosition = bounds.size.height - 1.0
    let underlineFrame = CGRect(x: underlineXPosition, y: underLineYPosition, width: underlineWidth, height: underlineHeight)
    let underline = UIView(frame: underlineFrame)
    underline.backgroundColor = Color.default80.withAlphaComponent(0.8)
    underline.tag = 1
    addSubview(underline)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 2020-01-27
    • 2020-01-25
    相关资源
    最近更新 更多