ios - 选项卡栏角半径不显示透明角

标签 ios swift xcode swift4 swift5

我正在尝试向左上角和右上角的选项卡栏添加圆角半径。

这是我的代码:

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]
    }

}

这是我的选项卡栏界面生成器:

enter image description here

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

enter image description here

正如您所看到的,如果您观察角落,它们不是透明的,而是白色的。它应该显示其背后的图像。所以看起来屏蔽出了问题,但我不确定是什么。

我做错了什么?

这是我的另一个可能会影响此问题的 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
        }
    }

}

更新:

我发现,如果我更改选项卡后面的 View Controller 的背景颜色,选项卡栏的角会与该颜色匹配:

enter image description here

如果我调试 View ,您实际上可以在其中一个 View 中看到小红角:

enter image description here

这是什么意思?

最佳答案

我创建了一个仅包含 TabBarController 的项目。其中,我使用了您的代码并设置了角半径、边框宽度和边框颜色。

在第一个 ViewController 中,我执行了以下操作:

  1. 检查 ViewController 中是否选中“Under Bottom Bars”。
  2. 添加了图像并将其延伸到底部栏下方。

一切似乎都按预期进行。见下图。也许您可以仔细检查您的代码,看看上述步骤是否有帮助。

Tab bar

关于ios - 选项卡栏角半径不显示透明角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60689765/

相关文章:

ios - UIViewController 中的 Xcode 5.1 UITableView - 自定义 TableViewCell socket 为零

内部初始化程序时的 Swift 类型推断差异

ios - swift 中持续时间的动画问题

ios - @synthesize 不再自动添加到 .m 文件?

iOS 自定义字体显示在模拟器上,但不显示在设备上

ios - UITextfield 验证 1 - 100 之间的国家/地区货币

ios - AudioKit 多个 AKMIDISampler

ios - 在滚动条上隐藏 UINavigationBar

swift - 如何将变量的值设置为在日期选择器中选择的小时值

ios - segue 在简单的 segue 测试中不起作用