xcode 标签栏角半径不显示透明角

svujldwt  于 2023-06-07  发布在  其他
关注(0)|答案(2)|浏览(191)

我试图添加一个角落半径我的标签栏在左上角和右上角。
下面是我的代码:

import UIKit

class TabBarController: UITabBarController, UITabBarControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.tabBar.layer.cornerRadius = 32
        self.tabBar.layer.masksToBounds = true
        self.tabBar.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]
    }

}

下面是我的标签栏界面生成器:

但是我的标签栏看起来像这样:

正如你所看到的,如果你看这些角,它们不是透明的,它们是白色的。它应该显示它后面的图像。所以看起来像是掩蔽出了问题,但我不确定是什么。
我做错了什么?
下面是我的另一个IBDesignable类,它可能会影响这个:

import UIKit

@IBDesignable
class DesignableView: UIView {

}

@IBDesignable
class DesignableButton: UIButton {

}

@IBDesignable
class DesignableLabel: UILabel {

}

@IBDesignable
class DesignableTextField: UITextField {

}

extension UIView {

    @IBInspectable
    var cornerRadius: CGFloat {
        get {
            return layer.cornerRadius
        }
        set {
            layer.cornerRadius = newValue
            layer.masksToBounds = newValue > 0
        }
    }

    @IBInspectable
    var shadowOffset: CGSize {
        get {
            return layer.shadowOffset
        }
        set {
            layer.shadowOffset = newValue
        }
    }

    @IBInspectable
    var shadowColor: UIColor {
        get {
            return UIColor(cgColor: layer.shadowColor!)
        }
        set {
            layer.shadowColor = newValue.cgColor
        }
    }

    @IBInspectable
    var shadowRadius: CGFloat {
        get {
            return layer.shadowRadius
        }
        set {
            layer.shadowRadius = newValue
        }
    }

    @IBInspectable
    var shadowOpacity: Float {
        get {
            return layer.shadowOpacity
        }
        set {
            layer.shadowOpacity = newValue
        }
    }

    @IBInspectable
    var borderWidth: CGFloat {
        get {
            return layer.borderWidth
        }
        set {
            layer.borderWidth = newValue
        }
    }

    @IBInspectable
    var borderColor: UIColor {
        get {
            return UIColor(cgColor: layer.borderColor!)
        }
        set {
            layer.borderColor = newValue.cgColor
        }
    }

}

更新:
我发现,如果我改变选项卡后面的视图控制器的背景颜色,选项卡栏的角落会匹配该颜色:

如果我调试视图,你实际上可以看到其中一个视图中的小红角:

这是什么意思?

lvjbypge

lvjbypge1#

我用TabBarController创建了一个项目。在这一点上,我使用了你的代码,并设置了角半径,边框宽度和边框颜色。
在第一个ViewController中,我执行了以下操作:
1.已检查是否在ViewController中选中了“Under Bottom Bars”。
1.添加了一个图像,并将其扩展到底部栏下。
这一切似乎都像预期的那样工作。见下图。也许你可以仔细检查你的代码,看看上面的步骤是否有帮助。

w8ntj3qf

w8ntj3qf2#

刚刚遇到了同样的问题,我将我的UICollectionView锚定到view.safeAreaLayoutGuide.bottomAnchor。这导致我看到UITabBarController后面的视图控制器背景色,而不是单元格内容。从你的视图层次结构看,它看起来像是同样的问题,白色框架没有排在UITabBarController后面。将UICollectionView底部锚设置为view.bottomAnchor,并向集合视图添加底部内容插入,解决了我的问题
下面是我在UITabBarController子类https://stackoverflow.com/a/65285566/19499376中使用的代码

相关问题