2016-12-13 6 views
1

Мой вызов выглядит примерно так:UIView.transition выцветает тренажере, но не на устройстве

UIView.transition(with: button, duration: 0.5, 
        options: .transitionCrossDissolve, 
        animations: { button.hidden = false }, 
        completion: null) 

Когда я использую его, чтобы показать кнопку, она работает, как ожидается, с хорошей выцветанию в. Когда я использую его для скрытия (с button.hidden = true), он снова отлично работает в симуляторе iOS, но на устройстве - iPhone или iPad - он просто исчезает, не исчезает.

Единственное существенное различие, которое я могу найти, это то, что мои устройства работают под управлением iOS 10.2, но у симулятора только 10.1. Xcode не дает мне возможность загрузить 10.2 симулятор.

Есть ли что-нибудь еще, что мне не хватает? Существуют ли другие варианты анимации, которые я должен использовать?

Возможно, стоит отметить, что кнопка, которую я скрываю и показываю, находится внутри UIBarButtonItem в навигационной панели.

ответ

0

Поскольку моя кнопка находится в навигационной панели, я закончил использование navigationItem.setRightBarButtonItems(buttons, animated: true). При этом анимация затухала на выходе как на симуляторах, так и на устройствах.

1

У меня была такая же проблема, но только со стандартным UIView в UIView. Я исправил мой, передав представление вида, которое я скрывал, как параметр with:. Я думаю, что повторное чтение документов - это то, как вы должны это делать, и тот факт, что он работал, передав рассматриваемое представление, возможно, был просто ошибкой, которую Apple могла зафиксировать в 10.2, но это всего лишь предположение.

Во всяком случае, переписывание кода в OP, используя то, что я сделал, чтобы исправить мое для иллюстрации:

UIView.transition(with: button.superview!, duration: 0.5, 
        options: .transitionCrossDissolve, 
        animations: { button.hidden = false }, 
        completion: null) 
Смежные вопросы