效果图
代码实现
代码的核心就是计算按钮的位置
let cout = CGFloat(childViewControllers.count)
let width = tabBar.bounds.width/cout
composeButton.frame=tabBar.bounds.insetBy(dx: 2*width, dy:-20)
composeButton.layer.cornerRadius=width/5
composeButton.clipsToBounds=true
tabBar.addSubview(composeButton)
这样会导致点击按钮和消息之间出现空白,原因就是容错点的出现。
容错点:两个按钮之间会有间隙,用手点击不会出错,但是鼠标比较精确。
解决方法:把宽度减1,// 将向内缩进的宽度减少,能够让按钮的宽度变大
let cout = CGFloat(childViewControllers.count)
let width = tabBar.bounds.width/cout-1
composeButton.frame=tabBar.bounds.insetBy(dx: 2*width, dy:-20)
composeButton.layer.cornerRadius=width/5
composeButton.clipsToBounds=true
tabBar.addSubview(composeButton)
这里多说一句,tabBar.bounds.insetBy(dx: 2*width, dy:-20)这里类似与OC的cgrectInsert,正数向内缩进,负数向外扩展。