Вы добавили кнопку к UITabBar
из UITabBarController
, так как половина части кнопки будет отображаться над панелью вкладок, а половина под панелью вкладок соответствует кадру.
Так что, я думаю, вы не получите нажатие на ту часть кнопки, которая находится вне вкладки (над вкладкой) и не дотронется до нее.Если вы сделаете кнопку немного большой ИЛИ попытайтесь щелкнуть стрелкой в симуляторе, вы поймете, что идея.
Если вам нужна кнопка внизу, но чуть выше, тогда создайте пользовательскую панель вкладок, чтобы добиться такого дизайна.Или же вы можете добавить эту кнопку в UITabBarController
вместо Tabbar.
class MyTabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.addButton()
}
func addButton() {
let button = UIButton(type: UIButton.ButtonType.custom)
button.bounds = CGRect(x:0,y:0,width:50,height:50); //1
button.backgroundColor = UIColor.purple
button.center = CGPoint(x:self.tabBar.frame.size.width/2, y:self.tabBar.frame.size.height/2 - 50 + self.tabBar.frame.origin.y); //2
button.addTarget(self, action: #selector(click(button:)), for: UIControl.Event.touchUpInside)
button.layer.cornerRadius = button.frame.size.height/2
button.layer.masksToBounds = false
button.layer.shadowColor = UIColor.black.withAlphaComponent(0.5).cgColor
button.layer.shadowRadius = 5.0
button.layer.shadowOffset = CGSize(width: 0.0, height: 5.0)
button.layer.shadowOpacity = 0.5
//tabBar.addSubview(button) //3
self.view.addSubview(button). //4
}
@objc func click(button: UIButton) {
print("Button get clicked")
}
}
Я пометил четыре вещи с прокомментированными числами в конце строк, которые вы можете внести в свой код и попробовать.