How to set top left and right corner radius with desired drop shadow in UITabbar?

后端 未结 5 675
萌比男神i
萌比男神i 2021-01-05 03:05

I\'ve spent almost a couple of hours to figure it out. However, it did not happen and finally, I had to come here. Two things are required to be achieved: <

5条回答
  •  情话喂你
    2021-01-05 03:48

    Q : One more little question arose here along, suppose, Even if, However, we were able to accomplish this, Would Apple review team accept the application? A: Yes They are accept your app I have Add This Kind Of TabBar.

    Create Custom TabBar

    HomeTabController

    import UIKit
    
    class HomeTabController: UITabBarController
    {
        var viewCustomeTab : CustomeTabView!
        var lastSender : UIButton!
    
        //MARK:- ViewController Methods
        override func viewDidLoad()
        {
            super.viewDidLoad()
    
            UITabBar.appearance().shadowImage = UIImage()
    
            allocateTabItems()
        }
    
        //MARK:- Prepare Methods
        // Allocate shop controller with tab bar
        func allocateTabItems()
        {
    
            let vc1 = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "Avc") as? Avc
            let item1 = UINavigationController(rootViewController: vc1!)
            self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
            self.navigationController?.navigationBar.shadowImage = UIImage()
            self.viewControllers = [item1]
            createTabBar()
        }
    
        func createTabBar()
        {
            viewCustomeTab = CustomeTabView.instanceFromNib()
            viewCustomeTab.translatesAutoresizingMaskIntoConstraints = false
            viewCustomeTab.call()
    
            self.view.addSubview(viewCustomeTab)
    
            if #available(iOS 11, *)
            {
                let guide = view.safeAreaLayoutGuide
                NSLayoutConstraint.activate([guide.bottomAnchor.constraint(equalToSystemSpacingBelow: viewCustomeTab.bottomAnchor, multiplier: 0), viewCustomeTab.leadingAnchor.constraint(equalToSystemSpacingAfter: guide.leadingAnchor, multiplier: 0), guide.trailingAnchor.constraint(equalToSystemSpacingAfter: viewCustomeTab.trailingAnchor, multiplier: 0), viewCustomeTab.heightAnchor.constraint(equalToConstant: 70) ])
            }
            else
            {
                let standardSpacing: CGFloat = 0
                NSLayoutConstraint.activate([viewCustomeTab.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor, constant: standardSpacing), bottomLayoutGuide.topAnchor.constraint(equalTo: viewCustomeTab.bottomAnchor, constant: standardSpacing)
                    ])
            }
    
            viewCustomeTab.btnTab1.addTarget(self, action: #selector(HomeTabController.buttonTabClickAction(sender:)), for: .touchUpInside)
            viewCustomeTab.btnTab2.addTarget(self, action: #selector(HomeTabController.buttonTabClickAction(sender:)), for: .touchUpInside)
            viewCustomeTab.btnTab3.addTarget(self, action: #selector(HomeTabController.buttonTabClickAction(sender:)), for: .touchUpInside)
            viewCustomeTab.btnTab4.addTarget(self, action: #selector(HomeTabController.buttonTabClickAction(sender:)), for: .touchUpInside)
            viewCustomeTab.btnTab5.addTarget(self, action: #selector(HomeTabController.buttonTabClickAction(sender:)), for: .touchUpInside)
    
            //self.view.layoutIfNeeded()
            viewCustomeTab.layoutIfNeeded()
            viewCustomeTab.btnTab1.alignContentVerticallyByCenter(offset: 3)
            viewCustomeTab.btnTab2.alignContentVerticallyByCenter(offset: 3)
            viewCustomeTab.btnTab3.alignContentVerticallyByCenter(offset: 3)
            viewCustomeTab.btnTab4.alignContentVerticallyByCenter(offset: 3)
            viewCustomeTab.btnTab5.alignContentVerticallyByCenter(offset: 3)
            viewCustomeTab.btnTab1.isSelected = true
        }
    
        //MARK:- Button Click Actions
        //Manage Tab From Here
        func setSelect(sender:UIButton)
        {
            viewCustomeTab.btnTab1.isSelected = false
            viewCustomeTab.btnTab2.isSelected = false
            viewCustomeTab.btnTab3.isSelected = false
            viewCustomeTab.btnTab4.isSelected = false
            viewCustomeTab.btnTab5.isSelected = false
            sender.isSelected = true
        }
    
        @objc func buttonTabClickAction(sender:UIButton)
        {
            //self.selectedIndex = sender.tag
            if sender.tag == 0
            {
                let vc1 = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "Bvc") as? Bvc
    
                 let item1 = UINavigationController(rootViewController: vc1!)
                item1.navigationBar.isHidden = false
                self.viewControllers = [item1]
                setSelect(sender: viewCustomeTab.btnTab1)
                return
            }
    
            if sender.tag == 1
            {
                let vc2 = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "Cvc") as? Cvc
                let item2 = UINavigationController(rootViewController: vc2!)
                item2.navigationBar.isHidden = false
                item2.navigationBar.isTranslucent = false
                self.viewControllers = [item2]
                setSelect(sender: viewCustomeTab.btnTab2)
                return
            }
    
            if sender.tag == 2
            {
                let vc3 = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "Dvc") as? Dvc
                let item3 = UINavigationController(rootViewController: vc3!)
                item3.navigationBar.isHidden = false
                 item3.navigationBar.isTranslucent = false
                self.viewControllers = [item3]
                setSelect(sender: viewCustomeTab.btnTab3)
                return
            }
    
            if sender.tag == 3
            {
    
            }
    
            if sender.tag == 4
            {
    
            }
        }
    }
    
    
    Create Custom View For Shadow Effect and For + Button. 
    
    import UIKit
    
    class CustomeTabView: UIView
    {
        @IBOutlet weak var btnTab5: UIButton!
        @IBOutlet weak var btnTab4: UIButton!
        @IBOutlet weak var btnTab3: UIButton!
        @IBOutlet weak var btnTab2: UIButton!
        @IBOutlet weak var btnTab1: UIButton!
        @IBOutlet weak var vRadius: UIView!
    
    
        class func instanceFromNib() -> CustomeTabView
        {
            return UINib(nibName: "CustomeTabView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! CustomeTabView
        }
    
        private var shadowLayer: CAShapeLayer!
    
        override func layoutSubviews()
        {
            super.layoutSubviews()
    
            let shadowSize : CGFloat = 2.0
    
            let shadowPath = UIBezierPath(roundedRect: CGRect(x: -shadowSize / 2,   y: -shadowSize / 2, width: self.vRadius.frame.size.width, height: self.vRadius.frame.size.height), cornerRadius : 20)
    
            self.vRadius.layer.masksToBounds = false
            self.vRadius.layer.shadowColor = UIColor.black.cgColor
            self.vRadius.layer.shadowOffset = CGSize.zero//(width: self.vRadius.frame.size.width, height: self.vRadius.frame.size.height)
            self.vRadius.layer.shadowOpacity = 0.5
            self.vRadius.layer.shadowPath = shadowPath.cgPath
            self.vRadius.layer.cornerRadius = 20
          }
    

    OpenImg

提交回复
热议问题