美文网首页
swift UITabBar 中间凸起点击完全有反应

swift UITabBar 中间凸起点击完全有反应

作者: 乐毅ya | 来源:发表于2017-12-07 14:24 被阅读0次

    解决 UITabBar 中间凸起点击完全有反应

    从网上寻找没有找到一个比较令自己满意的的解决方法,网上大部分都是一些自定义一个继承自系统UITabbar的LBTabbar,来实现中间凸起的按钮的点击触发时间

    实现思路
    • 研究iOS 事件传递机制(网上很多资料这里不再详细阐述了)
    • 禁止凸起按钮覆盖住地UITabBarItem
    >let midTabBarItenm = UITabBarItem()
            midTabBarItenm.isEnabled = false
    
    • 为UITabBar写一个分类,重写hitTest方法
    >extension UITabBar{
    >  open override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
            var view = super.hitTest(point, with: event)
            for subview in subviews {
                //用tag是为了寻找中间凸起的按钮
                if subview.tag == 1000{
                    //将点击点,转换坐标到凸起的按钮上,判断这个点是否在按钮上
                    let newPoint = self.convert(point, to: subview)
                    //如果是,将按钮作为处理点击事件的的view 返回
                    if subview.bounds.contains(newPoint){
                        view = subview
                    }
                }
            }
            return view
        }
    }
    

    这样就可以完美的用很少的代码来解决这个中间凸起的点击事件了

    相关文章

      网友评论

          本文标题:swift UITabBar 中间凸起点击完全有反应

          本文链接:https://www.haomeiwen.com/subject/mcmdixtx.html