NSSplitViewItem.isCollapsed игнорирует продолжительность анимации - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь свернуть NSSplitViewItem вот так

NSAnimationContext.runAnimationGroup({ context in
    context.duration = 0.1
    context.allowsImplicitAnimation = true
    searchItem.isCollapsed = collapsed
}, completionHandler: {
    // do stuff
})

Независимо от того, что я установил для duration, длительность анимации анимации коллапса не меняется.

Установка длительности на CATransaction также не работает.

При проверке файлов заголовков упоминается следующее:

Точную используемую анимацию можно настроить, установив ее в словаре -анимации с ключом «свернулся».

Это вызывает еще больше вопросов. Когда я устанавливаю эту анимацию? Какой ключевой путь я анимирую с этой анимацией? Что к / от значений он ожидает? и т.д ... Все, что я хочу сделать, это изменить его продолжительность.

Решение:

В соответствии с ответом @ Loengard, это то, что я пошел с

NSAnimationContext.runAnimationGroup { _ in
    let animation = CABasicAnimation(keyPath: nil)
    animation.duration = 0.1

    searchItem.animations["collapsed"] = animation
    searchItem.animator().isCollapsed = collapsed
}

1 Ответ

0 голосов
/ 11 апреля 2019

Словарь, к которому относится заголовочный файл: searchItem.animations. Вам не нужно указывать fromValue или toValue, просто настройте продолжительность следующим образом:

    NSAnimationContext.runAnimationGroup({ context in
        context.duration = 0.1
        context.allowsImplicitAnimation = true

        let collapseAnimation = CABasicAnimation(keyPath: "collapsed")
        collapseAnimation.duration = 0.1

        var existingAnimations = searchItem.animations
        existingAnimations["collapsed"] = collapseAnimation
        searchItem.animations = existingAnimations

        searchItem.isCollapsed = !searchItem.isCollapsed

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