微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将角落添加到UITabBarController

如何解决将角落添加到UITabBarController

嗨,我是iOS开发的新手,遇到了我要克服的挑战。基本上我想将角半径添加到UITabBarController,但是我不知道如何。我检查了 Stackoverflow Youtube 中的几个资源,人们共享的解决方案要么太复杂,难以理解,要么出现错误,例如“ UITabBarController类型的值'没有成员'layer'。” 。顺便说一下,我不使用情节提要。

(注意:代码中的注释仅用于样式设置。由于无法使它们正常工作,因此对它们进行了注释。)

代码

import UIKit

class TabBarViewController: UIViewController,UITabBarControllerDelegate {
    
    var tabBarCnt: UITabBarController!
    override func viewDidLoad() {
        super.viewDidLoad()
        createTabBar()
        setUpBarStyle()
    }
    func createTabBar(){
        //        viewcontroller.tabBarItem.title = "Dash"
        //        viewcontroller.tabBarItem.image = UIImage.init(named: "imageName")
        //        viewcontroller.tabBarItem.selectedImage= UIImage.init(named: "imageName")
        tabBarCnt = UITabBarController()
        tabBarCnt.tabBar.barStyle = .default
//        let mapVC = MapViewController()
        let homeVC = HomeView()
//        mapVC.tabBarItem.title  = "Map"
        homeVC.title = "Home"
        tabBarCnt.viewControllers = [homeVC]
        
        self.view.addSubview(tabBarCnt.view)
        
    }
    func setUpBarStyle(){
//        would like to add corner radius
        
        
        let layer = CAShapeLayer()
//
//        layer.path = UIBezierPath(roundedRect: CGRect(x: 30,y: self.tabBarCnt.bounds.minY + 5,width: self.tabBar.bounds.width - 60,height: self.tabBar.bounds.height + 10),cornerRadius: (self.tabBar.frame.width/2)).cgPath
//        layer.shadowColor = UIColor.lightGray.cgColor
//        layer.shadowOffset = CGSize(width: 5.0,height: 5.0)
//        layer.shadowRadius = 25.0
//        layer.shadowOpacity = 0.3
//        layer.borderWidth = 1.0
//        layer.opacity = 1.0
//        layer.isHidden = false
//        layer.masksToBounds = false
//        layer.fillColor = UIColor.white.cgColor
//
//        self.tabBarCnt.layer.insertSublayer(layer,at: 0)
//        if let items = self.tabBarCnt.items {
//          items.forEach { item in item.imageInsets = UIEdgeInsets(top: 0,left: 0,bottom: -15,right: 0) }
//        }
//
//        self.tabBarCnt.itemWidth = 30.0
//        self.tabBarCnt.itemPositioning = .centered
    }
}

解决方法

您可以在UITabBarController中修改现有的tabBar。

func setUpBarStyle(){
    // Clipping needs to be enabled,otherwise rounded corners won't show.
    tabBarCnt.tabBar.clipsToBounds = true
    tabBarCnt.tabBar.layer.cornerRadius = 20
    // I guess you want to mask to top left and right corners. If not,change the maskedCorners to what you want.
    tabBarCnt.tabBar.layer.maskedCorners = [.layerMinXMinYCorner,.layerMaxXMinYCorner]
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。