Пользовательский кадр UIView действует странно - PullRequest
0 голосов
/ 02 апреля 2020

Я создал пользовательский UIView, который функционирует как TabBar для моего приложения. TabBar имеет 3 кнопки, которые функционируют как элементы навигации, каждый раз, когда элемент нажимается, он имеет цвет фона, который является другим UIView, который я создал программно.

Он отлично работает в iPhone X, XS, XS MAX и 8 Plus, проблема возникает в iPhone 8. Кадр UIView x больше, чем должен быть, я попытался layoutIfNeeded и layoutSubviews без успеха. Кроме того, после нажатия на другой элемент TabBar и возврата к поврежденному элементу, он был исправлен.

Код выглядит так:

func tabBarSelected(selected: Bool, tabBarButton: UIButton) {        
    if selected {

        let point = self.viewTabBar.convert(tabBarButton.frame, to: self.viewTabBar)
        let backgroundView = UIView(frame: point)
        backgroundView.tag = AppConstants.Keys.Defines.BackgroundViewTag
        backgroundView.backgroundColor = .navigationBarBackgroundColor()
        backgroundView.alpha = 0.0
        backgroundView.layer.cornerRadius = 5.0

        self.viewTabBar.addSubview(backgroundView)
        self.viewTabBar.bringSubviewToFront(tabBarButton)

        UIView.animate(withDuration: 0.2, animations: {
            backgroundView.alpha = 0.5
        }) { (complete) in

        }
    } else {
        let backgroundView = self.viewTabBar.viewWithTag(AppConstants.Keys.Defines.BackgroundViewTag)
        UIView.animate(withDuration: 0.2, animations: {
            backgroundView?.alpha = 0.0
        }) { (complete) in
            backgroundView?.removeFromSuperview()
        }
    }
}

Кадры в начале выглядят так :

DEBUG: Button frame: (306.0, 8.0, 100.0, 38.0)

И после нажатия другой кнопки и возврата к указанному c пункту:

DEBUG: Button frame: (276.5, 8.0, 90.5, 37.0)

В чем проблема?

gif

Вот как это выглядит:

tab bar bug

Вот как я планировал:

tab bar regular

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...