Я работаю над приложением macOS, которое использует автоматическое расположение в иерархии представлений с представлениями на основе слоев.Приложение использует NSStackView
с несколькими подпредставлениями, каждое из которых имеет кнопку свертывания / раскрытия, чтобы изменить размер соответствующего подпредставления.Изменение размера подпредставлений осуществляется путем добавления и удаления ограничений макета, а для анимации изменения размера используется контекст анимации.Я реализовал это, как показано на WWDC 2013, сессия 213, начиная примерно с минуты 29 :
@objc func disclosureToggeled(_ sender : Any) {
if isCollapsed {
self.addConstraint(collapseConstraint)
}
else {
self.removeConstraint(collapseConstraint)
}
NSAnimationContext.runAnimationGroup({ context in
context.allowsImplicitAnimation = true
self.window?.layoutIfNeeded()
})
}
Анимация изменения размера работает, как и ожидалось.
Myпроблема : если я запускаю анимацию изменения размера, и подпредставление, содержащее сфокусированный элемент пользовательского интерфейса, анимируется в новую позицию, его кольцо фокусировки немедленно переходит с его начала на конечную позицию, в то время как сам элемент пользовательского интерфейса анимируется правильно.
Есть идеи, что я делаю не так?