【问题标题】:UIKit: how can I round and clip the corners of a UINavigationBar?UIKit:如何对 UINavigationBar 的角进行圆角和剪裁?
【发布时间】:2020-10-31 17:44:26
【问题描述】:

我想把我的导航控制器栏的两个底角弄圆,所以它看起来像这样:

我试过了:

final class RoundedNavigationController: UINavigationController {
    override func viewDidAppear(_ animated: Bool) {
        self.navigationBar.layer.cornerRadius = 20
        self.navigationBar.clipsToBounds = true
        self.navigationBar.layer.maskedCorners = [.layerMinXMaxYCorner,.layerMaxXMaxYCorner]
    }
}

但这是我得到的结果:

为什么安全区部分也被剪掉了?

感谢您的帮助

【问题讨论】:

    标签: ios uikit uinavigationbar


    【解决方案1】:

    为什么安全区部分也被剪掉了?

    导航的边界顶部位于状态栏的底部。导航栏的 绘图 向上延伸 进入“状态栏”区域(并一直到屏幕顶部)。

    因此,您不能将导航栏的clipsToBounds 设置为true,因为这样会破坏它的绘制方式。

    更好的策略可能是构建导航栏的背景图像以使其看起来像您想要的那样。因此,例如,我能够获得这种效果:

    不是通过圆角和剪裁来实现的。

    【讨论】:

    • 感谢您的回答。那么,这是否意味着不可能做到呢?
    • 如果“它”涉及对图层进行四舍五入和裁剪,这是不可能的。您可以绘制您所描述的导航栏图像,但不能剪辑。我添加了一个屏幕截图给你看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多