使用圆形按钮自定义标签栏 发布 swift

Customise Tab Bar with rounded button Issue swift

提问人:Aleesha 提问时间:11/2/2020 更新时间:5/13/2021 访问量:1149

问:

我一直在自定义中间带有圆角按钮的标签栏,并设置了拐角半径曲线,我在故事板中设置如下,

enter image description here

我已经将图像渲染为原始图像,但我的问题是当我在模拟器中运行时,圆圈的上半部分丢失了,如图所示,

enter image description here

我已经为 UITabBar 设置了类,

class ProminentTabBar: UITabBar {
    var prominentButtonCallback: (()->())?
    
    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        guard let items = items, items.count>0 else {
            return super.hitTest(point, with: event)
        }
        
        let middleItem = items[items.count/2]
        let middleExtra = middleItem.imageInsets.top
        let middleWidth = bounds.width/CGFloat(items.count)
        let middleRect = CGRect(x: (bounds.width-middleWidth)/2, y: middleExtra, width: middleWidth, height: abs(middleExtra))
        if middleRect.contains(point) {
            prominentButtonCallback?()
            return nil
        }
        return super.hitTest(point, with: event)
    }
}

和 tabbarcontroller 也在下面添加了,

override func viewDidLoad() {
    super.viewDidLoad()
    
    let prominentTabBar = self.tabBar as! ProminentTabBar
    prominentTabBar.prominentButtonCallback = prominentTabTaped
}

func prominentTabTaped() {
    selectedIndex = (tabBar.items?.count ?? 0)/2
}

这个来源来自堆栈溢出票证:- 我们如何创建一个更大的中心 UITabBar 项

有没有人对此有解决方案>?

iOS 的iPhone iOS7 SWIFT4 SWIFT5

评论


答:

0赞 Krishna Raj Salim 5/13/2021 #1

tabbar.clipsToBounds = false

您可以通过代码或在 StoryBoard 中更改它

继续编码........ :)