Анимация цвета изображения с помощью foregroundColor на самом деле не анимируется интерактивно - PullRequest
2 голосов
/ 01 октября 2019

Я пробую некоторые анимационные материалы из учебных пособий Apple по SwiftUI. В разделе Добавление анимации к отдельным представлениям написано:

Цвет, прозрачность, поворот, размер и другие свойства представления могут быть анимированными.

Но когда я попытался анимировать цвет изображения с помощью модификатора foregroundColor(_:) с помощью переключения значения свойства State, он, похоже, на самом деле не анимировался. Ради исследования я добавил длительность анимации.

struct ContentView: View {

    @State var isFavorite = false

    var body: some View {
        Button(action: {
            withAnimation(.easeInOut(duration: 5)) { self.isFavorite.toggle() }
        }) {
            Image(systemName: "star.fill")
                .imageScale(.large)
                .foregroundColor(self.isFavorite ? .orange : .gray)
                .rotationEffect(.degrees(self.isFavorite ? 360 : 0))
        }
    }
}

В приведенном выше коде изменение цвета orange <<->> gray происходит немедленно. Однако эффект вращения действительно уважает анимацию и он тоже интерактивен.


По сути не дубликат:

Я сталкивался с подобным вопросом SwiftUI: Цвет анимации текста - foregroundColor () , но этоо Text компонент. Поэтому я предполагаю, что это не прямой дубликат.


И на сайте разработчика недостаточно документации о foregroundColor (_:) , поэтому я предполагаю, что цитата в уроках должна быть источником правды.

Итак, мой вопрос, является ли это ошибкой или преднамеренным поведением?

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