From ce077395c2da6d840b62c7af45641008e38e673d Mon Sep 17 00:00:00 2001 From: Shahriar Nasim Nafi Date: Wed, 14 Jul 2021 16:13:15 +0600 Subject: [PATCH] support: from iOS 13 --- Sources/Marquee/Extension/View+Ex.swift | 24 ++++++++++++++++++++++++ Sources/Marquee/Marquee.swift | 6 +++--- 2 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 Sources/Marquee/Extension/View+Ex.swift diff --git a/Sources/Marquee/Extension/View+Ex.swift b/Sources/Marquee/Extension/View+Ex.swift new file mode 100644 index 0000000..c71bbf8 --- /dev/null +++ b/Sources/Marquee/Extension/View+Ex.swift @@ -0,0 +1,24 @@ +// +// View+Ex.swift +// +// +// Created by Shahriar Nasim Nafi on 14/7/21. +// +// Idea from Zane Carter + +import SwiftUI +import Combine + +extension View { + /// A backwards compatible wrapper for iOS 14 `onChange` + @ViewBuilder func onValueChange(value: T, onChange: @escaping (T) -> Void) -> some View { + if #available(iOS 14.0, *) { + self.onChange(of: value, perform: onChange) + } else { + self.onReceive(Just(value)) { (value) in + onChange(value) + } + } + } +} + diff --git a/Sources/Marquee/Marquee.swift b/Sources/Marquee/Marquee.swift index a4723f8..9b0e965 100644 --- a/Sources/Marquee/Marquee.swift +++ b/Sources/Marquee/Marquee.swift @@ -58,13 +58,13 @@ public struct Marquee : View where Content : View { .onDisappear { self.isAppear = false } - .onChange(of: duration) { [] newDuration in + .onValueChange(value: duration) { newDuration in resetAnimation(duration: newDuration, autoreverses: self.autoreverses, proxy: proxy) } - .onChange(of: autoreverses) { [] newAutoreverses in + .onValueChange(value: autoreverses){ newAutoreverses in resetAnimation(duration: self.duration, autoreverses: newAutoreverses, proxy: proxy) } - .onChange(of: direction) { [] _ in + onValueChange(value: direction ) { _ in resetAnimation(duration: duration, autoreverses: autoreverses, proxy: proxy) } }.clipped()