Я создаю анимационную кнопку прогресса, которая отображает прогресс загрузки, а затем расширяется, чтобы показать текст кнопки после завершения загрузки (немного похоже на кнопки App Store).
У меня есть пользовательский вид кнопки, который принимает @ Связывание со значением внешнего прогресса CGFloat. Я знаю, что могу установить значение прогресса просмотра через init, но это, кажется, не приближает меня. Ход выполнения, конечно, видоизменяется за пределами пользовательского представления кнопок. Мне бы хотелось, чтобы кнопка автоматически обрабатывала изменения значения прогресса и расширялась автоматически, когда прогресс достигнет 1,0.
Я использую явную анимацию для анимации формы кнопки (с помощью нескольких частных @State свойство изменяется внутри с анимацией). Проблема в том, что мне нужно иметь возможность вызывать код, который устанавливает эти свойства @State при изменении значения прогресса @Binding. Я не вижу никакого способа сделать это без явных вызовов withAnimation, происходящих за пределами представления кнопок. Я не хочу использовать неявную анимацию, потому что это вызывает проблемы при изменении источника кнопки. Демонстрации, которые я нашел, просто устанавливают состояния изнутри кнопки, через .onTap.
В идеале, был бы способ вызвать функцию при изменении значения @Binding. Я видел что-то об использовании издателя, но это кажется излишним? Если это единственный вариант, то мне интересно, смогу ли я как-то сделать это в частном порядке в представлении кнопки и все же просто передать $ progress кнопке (для максимального повторного использования)?