Скрытие наложенной кнопки на панели вкладок

Я новичок в iOS и Swift. В настоящее время я работаю над приложением, в котором мне нужно показать панель вкладок с большой кнопкой в ​​центре. Учитывая нехватку времени, я создал кнопку в окне и программно поместил ее поверх панели вкладок. Теперь, когда я перехожу к этому экрану или удаляюсь от него, я добавляю/удаляю эту кнопку в viewDidAppear и viewDidDisappear соответственно. Это гарантирует, что когда панель вкладок исчезнет, ​​​​кнопка также не будет отображаться, и аналогично, когда отображается панель вкладок, кнопка также добавляется сверху. Однако из-за того, что добавление и удаление происходит в режимах viewDidAppear и viewDidDisappear, возникает небольшая задержка при отображении и удалении кнопки, из-за которой появляется мгновенное мерцание. То же самое в viewWillAppear и viewWillDisappear вообще не работает. Кнопка не отображается или скрывается в методах will. Может кто-нибудь предложить, что, вероятно, будет здесь не так? Заранее спасибо. Я прилагаю снимок экрана, чтобы дать общее представление о том, как это должно выглядеть.

требуемый пользовательский интерфейс


person Keya    schedule 22.06.2018    source источник
comment
Вы можете попробовать скрыть эту кнопку, чтобы остановить эффект мерцания вместо удаления, а не решение, но это также сработает, я также видел, что, когда я добавляю свои классы CALayer, загрузка занимает мало времени.   -  person iOS Geek    schedule 22.06.2018
comment
Я думаю, что это неправильный способ, вы должны добавить кнопку с учетом tabbarcontroller   -  person SPatel    schedule 22.06.2018
comment
stackoverflow.com/a/48293806/6630644   -  person SPatel    schedule 22.06.2018
comment
iOS Geek, спасибо за ответ. Мы тоже пытались спрятаться, но результат тот же. Это вызывает кратковременное мерцание. Мое лучшее предположение заключается в том, что панель вкладок отображается или удаляется в методах viewWillAppear и viewWillDisappear соответственно. Однако, поскольку мы скрываем/показываем кнопку в viewDidAppear/viewDidDisappear, это вызывает кратковременную задержку по отношению к вкладке.   -  person Keya    schedule 22.06.2018
comment
SPatel, спасибо за ссылку, эти тоже проверю. Однако изначально мы начали с добавления представления в качестве подвида самой панели вкладок. Но мы столкнулись с проблемой, что кнопка все еще видна, когда мы переходим на другой экран.   -  person Keya    schedule 22.06.2018
comment
встроить tabbarviewcontroller в навигационный контроллер, это работает для меня   -  person SPatel    schedule 22.06.2018
comment
вы можете сослаться на этот itunes.apple.com/us/app/ люкс-радио/id1073120504?mt=8   -  person SPatel    schedule 22.06.2018


Ответы (1)


Правильный способ добавить кнопку - добавить ее в представление UItabBarController вместо добавления в UIWindow.

class DashBoardViewController: UITabBarController {

    let button:UIButton = {
        let view = UIButton(frame: .zero)
        view.backgroundColor = .blue
        return view
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        initView()
    }

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        button.center = tabBar.center
    }

    private func initView() {
        button.center = tabBar.center
        view.addSubview(button)
    }
}
person SPatel    schedule 22.06.2018