我正在尝试向左上角和右上角的选项卡栏添加圆角半径。
这是我的代码:
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
}
}
}
更新:
我发现,如果我更改选项卡后面的 View Controller 的背景颜色,选项卡栏的角会与该颜色匹配:
如果我调试 View ,您实际上可以在其中一个 View 中看到小红角:
这是什么意思?
最佳答案
我创建了一个仅包含 TabBarController 的项目。其中,我使用了您的代码并设置了角半径、边框宽度和边框颜色。
在第一个 ViewController 中,我执行了以下操作:
- 检查 ViewController 中是否选中“Under Bottom Bars”。
- 添加了图像并将其延伸到底部栏下方。
一切似乎都按预期进行。见下图。也许您可以仔细检查您的代码,看看上述步骤是否有帮助。
关于ios - 选项卡栏角半径不显示透明角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60689765/