使UISegmentedControl的颜色与半透明导航栏的颜色匹配

阿列科普

我要在(半透明)导航栏的正下方添加一个分段控件,并希望它具有相同的颜色。我试图使其看起来像是导航栏的一部分。

isOpaque = false
layer.opacity = 0.85
let bkImg = UIImage(color: .systemBackground.withAplhaComponent(0.85), size: CGSize(width: 1, height: 16))
segmentedCtrl.setBackgroundImage(bkImg, for: .normal, barMetrics: .default)
setDividerImage(bkImg, forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)

我尝试过使用分段控件的不透明度和的颜色bkImg,但这根本没有效果。从头开始编写自定义选项卡栏会更快-iOS 13中的分段控件无法自定义。

阿列科普

这是一个完全hack,但看起来不错。

在此处输入图片说明

class CustomSegmentedControl: UISegmentedControl {
    private var underline: UIView!

    init() {
        super.init(frame: .zero)

        underline = UIView()
        underline.backgroundColor = tintColor
        view.addSubvie(underline)
    }

    override func layoutSubviews() {
        super.layoutSubviews()

        // Set background color to match navigation bar
        let bgColor = UIColor.systemBackground.hsbComponents.brightness == 1.0
            ? UIColor.black.withAlphaComponent(0.028) // light
            : UIColor.white.withAlphaComponent(0.073) // dark
        let img = UIImage(color: bgColor, size: CGSize(width: 1, height: 16))
        setBackgroundImage(img, for: .normal, barMetrics: .default)
        setDividerImage(img, forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)

        // Bonus: underline below selected tab
        var frame = underline.frame
        let tabWidth = self.frame.width / CGFloat(numberOfSegments)
        frame.origin.x = CGFloat(selectedSegmentIndex) * tabWidth
        frame.origin.y = self.frame.height - 2.0
        frame.size.width = tabWidth
        underline.frame = frame
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

匹配“透明”导航栏的颜色

来自分类Dev

导航栏在地图上具有半透明的颜色

来自分类Dev

半透明导航栏,带有其他颜色的按钮

来自分类Dev

Bootstrap-3导航栏的透明颜色

来自分类Dev

如何使此导航栏更薄且背景颜色透明

来自分类Dev

DocumentInteractionController导航栏颜色

来自分类Dev

CNContactPickerViewController导航栏颜色

来自分类Dev

在半透明的导航栏中查看?

来自分类Dev

UITableView位于半透明导航栏下

来自分类Dev

iOS中的半透明导航栏模糊

来自分类Dev

半透明/透明状态栏和导航栏

来自分类Dev

如何使QGraphicsItem具有半透明颜色?

来自分类Dev

在圆形滑块内填入半透明的颜色

来自分类Dev

终端机中的半透明颜色?

来自分类Dev

在Qt中绘制半透明颜色时避免颜色量化

来自分类Dev

在透明导航栏到半透明之间过渡

来自分类Dev

导航栏颜色和视图的颜色

来自分类Dev

自定义半透明颜色(改变透明度)

来自分类Dev

iPad:让子导航栏的颜色与主导航栏的颜色不同

来自分类Dev

SwiftUI:更新导航栏颜色

来自分类Dev

无法更改导航栏颜色

来自分类Dev

如何更改导航栏的颜色?

来自分类Dev

更改导航栏的默认颜色

来自分类Dev

SwiftUI:更新导航栏颜色

来自分类Dev

更改导航栏标题的颜色

来自分类Dev

独立更改导航栏的颜色

来自分类Dev

更改折叠的导航栏颜色

来自分类Dev

Android更改导航栏颜色

来自分类Dev

iOS导航颜色与视图颜色不匹配