【问题标题】:Is UISegmentedControl just not usable currently?UISegmentedControl 只是当前不可用吗?
【发布时间】:2020-06-21 01:53:46
【问题描述】:

我们的应用程序有一个“深色”调色板,主要是黑色或木炭背景。这在忽略(甚至不提供)对文本和背景颜色的控制的 Apple 控件中造成了一个主要问题。

UISegmentedControl 是一个特别好的例子。它通常是用难以辨认的、看似任意的文本/背景组合绘制的。这些控件都在 IB 中设置了完全相同的属性,但您永远不知道它们是否会从一个视图控制器到下一个视图控制器清晰可见。

在我们的应用程序中,大多数这些在“暗”模式下都可以,但“亮”模式是混乱的。我花了一天时间在 IB 中以编程方式试验主题、UIAppearance 和设置外观。我受够了。真的有人知道如何保证这些东西的易读性吗?

【问题讨论】:

    标签: ios colors themes uisegmentedcontrol ios-darkmode


    【解决方案1】:

    试试这个,

    let seg:UISegmentedControl = {
        let seg = UISegmentedControl()
        seg.insertSegment(withTitle: "tab 1", at: 0, animated: true)
        seg.insertSegment(withTitle: "tab 2", at: 1, animated: true)
        seg.selectedSegmentTintColor = .red   //you can replace the colours you want 
        seg.backgroundColor = .lightGray   //you can replace the colours you want 
        return seg
    }()
    

    结果 Dark Mode Light Mode

    【讨论】:

    • 谢谢。不幸的是, selectedSegmentTintColor 仅在 iOS 13+ 中可用,我们不能要求客户这样做。但是,您的建议确实让我仔细检查了我正在使用的颜色值,发现将导航栏按钮的背景设置为“浅”模式下的浅灰色和“深色”模式下的深灰色会产生良好的效果。在 IB 中创建的那些是清晰的,但不是很好。他们现在就可以了。
    • if #available(iOS 13.0, *) { seg.selectedSegmentTintColor = .red } else { seg.tintColor = .blue }
    • 谢谢!我知道如何检查操作系统版本中的功能可用性,但这无助于使所选部分在 iOS 13 之前清晰易读。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 2023-03-05
    相关资源
    最近更新 更多