Примечание. Ive уже проверила следующие проблемы с переполнением стека:
27907570, 32229252, 26118141, 31604300
Все, что я пытаюсь сделать, - это оживить анимацию в представлении (по альфе) при вызове IBAction, прикрепленного к кнопке. Затем реверсируйте при нажатии кнопки на экране.
Моей морщиной может быть то, что я использую вторичный вид, который находится на ViewDock в представлении раскадровки. Представление добавляется в подпункт во время viewDidLoad, где рамки/границы установлены так же, как и надстройка (для полной прокладки)
Причина, по которой это делается как представление наложения, поскольку оно является индикатором учебника.
Результат (как и многие другие, кто перечислил эту проблему) заключается в том, что представление (и содержащиеся элементы управления) просто появляется мгновенно и исчезает как мгновенно. Не угасать.
Я попробовал animationWithDuration с задержкой, с завершением и без завершения, с переходом и даже начал со старых UIView.beginAnimations.
Ничего не работает. Предложения тепло приветствовали.
Код примерно такой же прямой, как я могу это сделать:
Изменить: расширен код для всех соответствующих
Edit2: TL; DR Все работает, за исключением UIViewAnimateWithDuration, который, кажется, игнорирует блок и продолжительность и просто запускает встроенный код как немедленное изменение пользовательского интерфейса. Решение этого получает щедрость
@IBOutlet var infoDetailView: UIView! // Connected to the view in the SceneDock
override func viewDidLoad() {
super.viewDidLoad()
// Cut other vDL code that isn't relevant
setupInfoView()
}
func setupInfoView() {
infoDetailView.alpha = 0.0
view.addSubview(infoDetailView)
updateInfoViewRect(infoDetailView.superview!.bounds.size)
}
func updateInfoViewRect(size:CGSize) {
let viewRect = CGRect(origin: CGPointZero, size: size)
infoDetailView.frame = viewRect
infoDetailView.bounds = viewRect
infoDetailView.layoutIfNeeded()
infoDetailView.setNeedsDisplay()
}
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
updateInfoViewRect(size)
}
func hideInfoView() {
AFLog.enter(thisClass)
UIView.animateWithDuration(
2.0,
animations:
{
self.infoDetailView.alpha = 0.0
},
completion:
{ (finished) in
return true
}
)
AFLog.exit(thisClass)
}
func showInfoView() {
AFLog.enter(thisClass)
UIView.animateWithDuration(
2.0,
animations:
{
self.infoDetailView.alpha = 0.75
},
completion:
{ (finished) in
return true
}
)
AFLog.exit(thisClass)
}
// MARK: - IBActions
@IBAction func openInfoView(sender: UIButton) {
showInfoView()
}
@IBAction func closeInfoView(sender: UIButton) {
hideInfoView()
}
Обратите внимание, что я начал со следующего:
func showInfoView() {
UIView.animateWithDuration(2.0, animations: { () -> Void in
self.infoDetailView.alpha = 0.75
})
}
func hideInfoView() {
UIView.animateWithDuration(2.0, animations: { () -> Void in
self.infoDetailView.alpha = 0.00
})
}