diff --git a/Package.swift b/Package.swift index a27f82d..7e6bb2a 100644 --- a/Package.swift +++ b/Package.swift @@ -10,7 +10,8 @@ let package = Package( platforms: [ .iOS(.v15), .macOS(.v12), - .macCatalyst(.v15) + .macCatalyst(.v15), + .tvOS(.v15) ], products: [ // Products define the executables and libraries a package produces, and make them visible to other packages. diff --git a/Sources/Pow/Effects/SmokeEffect.swift b/Sources/Pow/Effects/SmokeEffect.swift index 660ed7f..d661c76 100644 --- a/Sources/Pow/Effects/SmokeEffect.swift +++ b/Sources/Pow/Effects/SmokeEffect.swift @@ -57,7 +57,7 @@ private struct SmokeEffect: ViewModifier, Continuous { GeometryReader { proxy in ZStack { ForEach(Array(particles.enumerated()), id: \.element) { (offset, particle) in - #if os(iOS) || os(visionOS) + #if os(iOS) || os(visionOS) || os(tvOS) let image = UIImage(named: particle, in: .module, with: nil)!.cgImage! #elseif os(macOS) let image = Bundle.module.image(forResource: particle)!.cgImage(forProposedRect: nil, context: nil, hints: nil)! @@ -70,7 +70,7 @@ private struct SmokeEffect: ViewModifier, Continuous { } } -#if os(iOS) || os(visionOS) +#if os(iOS) || os(visionOS) || os(tvOS) private class EmitterView: UIView { override class var layerClass : AnyClass { return CAEmitterLayer.self @@ -172,7 +172,7 @@ private struct SmokeLayerView: ViewRepresentable { } } -#if DEBUG +#if DEBUG && !os(tvOS) struct ContinuousParticleEffect_Previews: PreviewProvider { private struct Preview: View { @State diff --git a/Sources/Pow/Extensions/Duration+TimeInterval.swift b/Sources/Pow/Extensions/Duration+TimeInterval.swift index 7375eb6..5436a33 100644 --- a/Sources/Pow/Extensions/Duration+TimeInterval.swift +++ b/Sources/Pow/Extensions/Duration+TimeInterval.swift @@ -2,6 +2,7 @@ import Foundation @available(iOS 16.0, *) @available(macOS 13.0, *) +@available(tvOS 16.0, *) internal extension Duration { var timeInterval: TimeInterval { TimeInterval(components.seconds) + TimeInterval(components.attoseconds) / 1e18 diff --git a/Sources/Pow/Infrastructure/AngleControl.swift b/Sources/Pow/Infrastructure/AngleControl.swift index 564c194..9941fac 100644 --- a/Sources/Pow/Infrastructure/AngleControl.swift +++ b/Sources/Pow/Infrastructure/AngleControl.swift @@ -1,3 +1,4 @@ +#if !os(tvOS) import SwiftUI struct AngleControl: View { @@ -132,3 +133,4 @@ struct AngleControl_Previews: PreviewProvider { .padding() } } +#endif diff --git a/Sources/Pow/Infrastructure/WhileEffect.swift b/Sources/Pow/Infrastructure/WhileEffect.swift index 2de7d02..ea4cb21 100644 --- a/Sources/Pow/Infrastructure/WhileEffect.swift +++ b/Sources/Pow/Infrastructure/WhileEffect.swift @@ -54,6 +54,7 @@ public struct AnyConditionalEffect { /// - interval: The duration between each change effect. @available(iOS 16.0, *) @available(macOS 13.0, *) + @available(tvOS 16.0, *) public static func `repeat`(_ effect: AnyChangeEffect, every interval: Duration) -> AnyConditionalEffect { AnyConditionalEffect(guts: .repeating(effect, interval.timeInterval)) }