tab bar layout issue swift storyboard

问题描述 投票:0回答:0

所以我有一个标签栏,我已经实现了模糊效果,如 img (1) 所示。它在我的所有观点中都非常有效,除了一个。在我的 profileView 中,我添加了一个滚动视图并应用了所有必要的约束,如 img (2) 所示,但模糊效果不再可见,如 img (3) 所示。我不知道为什么添加滚动视图会在我的层次结构中添加这个额外的层,并且完全删除滚动视图确实解决了这个问题,所以我真的不知道问题的根源是什么。奇怪的是,即使在故事板中,当导航栏中嵌入了一个 scrollView 并将选项卡作为根控制器时,屏幕底部会出现一个黑色条,如 img (4) 所示。另一件需要注意的事情是,当我滚动到视图底部时,选项卡栏看起来如 img (5) 所示。

img 1 img 2

img 3 img 4

img 5

tab bar controller scene

hierarchy with incorrect layout of tab bar hierarchy with correct layout of tab bar

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)

swift storyboard uitabbarcontroller
© www.soinside.com 2019 - 2024. All rights reserved.