我如何创建一个自定义的UINavigationBar,底部的两个角是圆的?

问题描述 投票:1回答:1

我已经将导航栏只舍入了底部的两个角,但是当我使用clipsToBounds = true时,它也修剪了导航栏的顶部。在下图中,我希望整个条形为橙色,但只有一部分为橙色。

navBar

import UIKit

class MyNavBar: UINavigationBar {

override init(frame: CGRect) {
    super.init(frame: frame)
    setupNavBar()
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    setupNavBar()
}

func setupNavBar() {
    tintColor = .white
    barTintColor = .orange
    layer.cornerRadius = 20
    layer.maskedCorners = [.layerMinXMaxYCorner, .layerMaxXMaxYCorner]
    clipsToBounds = true
    }
}
swift uinavigationbar
1个回答
0
投票

您不应修改UINavigationBar视图层次结构或更改图层属性。有一种专用的方法setBackgroundImage(_:for:barMetrics:)可自定义UINavigationBar外观。我建议在Apple's UIKit Documentation here 👈中选中自定义导航栏的外观

为了允许对导航栏的外观进行完全自定义,您还可以提供自定义背景和阴影图像。要提供自定义背景图像,请使用setBackgroundImage(_:for:barMetrics:)方法,为适当的条形位置和度量值提供一个UIImage对象。

© www.soinside.com 2019 - 2024. All rights reserved.