所以我有一个标签栏,我已经实现了模糊效果,如 img (1) 所示。它在我的所有观点中都非常有效,除了一个。在我的 profileView 中,我添加了一个滚动视图并应用了所有必要的约束,如 img (2) 所示,但模糊效果不再可见,如 img (3) 所示。我不知道为什么添加滚动视图会在我的层次结构中添加这个额外的层,并且完全删除滚动视图确实解决了这个问题,所以我真的不知道问题的根源是什么。奇怪的是,即使在故事板中,当导航栏中嵌入了一个 scrollView 并将选项卡作为根控制器时,屏幕底部会出现一个黑色条,如 img (4) 所示。另一件需要注意的事情是,当我滚动到视图底部时,选项卡栏看起来如 img (5) 所示。
class TabbarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
setUpTabBar()
}
func setUpTabBar() {
// Set the custom view as the tab bar's background color
self.tabBar.backgroundColor = .clear
// Add a gradient layer to the tab bar
let gradientLayer = CAGradientLayer()
gradientLayer.colors = [
UIColor(red: 1, green: 1, blue: 1, alpha: 0.2).cgColor,
UIColor(red: 1, green: 1, blue: 1, alpha: 0.1).cgColor
]
gradientLayer.locations = [0, 1]
gradientLayer.startPoint = CGPoint(x: 0.25, y: 0.5)
gradientLayer.endPoint = CGPoint(x: 0.75, y: 0.5)
gradientLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransform(a: 0.88, b: 0.93, c: -0.93, d: 24.57, tx: 0.58, ty: -12.22))
gradientLayer.bounds = self.tabBar.bounds.insetBy(dx: -0.5 * self.tabBar.bounds.size.width, dy: -0.5 * self.tabBar.bounds.size.height)
gradientLayer.position = self.tabBar.center
self.tabBar.layer.addSublayer(gradientLayer)
// Apply corner radius to the tab bar
self.tabBar.layer.cornerRadius = 32
self.tabBar.layer.masksToBounds = true
self.tabBar.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]
// Add blur effect to tab bar's layer
let blurEffect = UIBlurEffect(style: .prominent)
let blurView = UIVisualEffectView(effect: blurEffect)
blurView.frame = self.tabBar.bounds
blurView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
self.tabBar.insertSubview(blurView, at: 0)
// Set the tab bar to be non-translucent
self.tabBar.isTranslucent = false
self.tabBar.itemWidth = UIScreen.main.bounds.width / CGFloat(self.tabBar.items!.count)
self.tabBar.itemPositioning = .centered
self.tabBar.itemSpacing = 0
// Set selected images for each tab bar item
if let items = self.tabBar.items {
for (index, item) in items.enumerated() {
item.selectedImage = UIImage(named: "selected_icon_\(index)")?.withRenderingMode(.alwaysOriginal)
}
}
// Remove unwanted UIImageView layers
for subview in self.tabBar.subviews {
if subview is UIImageView && subview.bounds.height <= 1 {
subview.removeFromSuperview()
}
}
}
}
我已经改变了滚动视图的约束,并没有改变。我删除了我的 scrollView 中的所有内容,结果是一样的,所以我知道将 scrollView 添加到我的视图控制器是特定的。我试图比较选项卡栏看起来正确的视图的视图层次结构和另一个不识别可能导致问题的差异的视图(img 6&7)