This commit is contained in:
Joe Fabisevich 2024-05-23 17:55:54 -04:00
commit 18b48455e4
No known key found for this signature in database
6 changed files with 10 additions and 5 deletions

View file

@ -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.

View file

@ -216,7 +216,7 @@ static func shine(angle: Angle, duration: Double = 1.0) -> AnyChangeEffect
Triggers a sound effect as feedback whenever a value changes.
This effect will not interrupt or duck any other audio that may currently playing. It may also not triggered based on the setting of the user's silent switch or playback device.
This effect will not interrupt or duck any other audio that may be currently playing. This effect is not guaranteed to be triggered; the effect running depends on the user's silent switch position and the current playback device.
To relay important information to the user, you should always accompany audio effects with visual cues.

View file

@ -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

View file

@ -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

View file

@ -1,3 +1,4 @@
#if !os(tvOS)
import SwiftUI
struct AngleControl<Label: View>: View {
@ -132,3 +133,4 @@ struct AngleControl_Previews: PreviewProvider {
.padding()
}
}
#endif

View file

@ -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))
}