Swiftの基本的な概念について学び、データ競合のない並行コードを実現する方法を知りましょう。
従来、可変状態(mutable state)は、細心の注意を払い、実行時の同期によって手動で保護する必要がありました。
import SwiftUI | |
struct AnimatingMaskedMeshView: View { | |
let referenceDate: Date = .now | |
@State private var mainPosition: CGPoint = .zero | |
@State private var positions: [CGPoint] = [] | |
private let blurRadius = 20.0 | |
private let alphaThreshold = 0.875 |
Swiftの基本的な概念について学び、データ競合のない並行コードを実現する方法を知りましょう。
従来、可変状態(mutable state)は、細心の注意を払い、実行時の同期によって手動で保護する必要がありました。
import SwiftUI | |
struct ContentView: View { | |
@State var trigger = 0 | |
@State var text = sampeles[0] | |
var body: some View { | |
VStack(alignment: .leading, spacing: 12) { | |
HackerTextEffectView( | |
text: text, |
// | |
// SignatureAnimation.swift | |
// OpenSwiftUIAnimations | |
// | |
// Created by Amos Gyamfi on 11.5.2024. | |
// | |
import SwiftUI | |
struct SignatureAnimation: View { |
import SwiftUI | |
extension [Color] { | |
static func rainbow(hue: Double = 0, count: Int) -> Self { | |
(0..<count).map { i in | |
var value = hue + Double(i) / Double(count) | |
value -= floor(value) | |
return Color(hue: value, saturation: 1/4, brightness: 1) | |
} | |
} |
import SwiftUI | |
struct SqureFlowView: View { | |
@StateObject private var holder = SquresHolder() | |
var body: some View { | |
TimelineView(.animation) { timeline in | |
Canvas { context, size in | |
holder.update(at: timeline.date, in: size) | |
for item in holder.squre { |
// | |
// ViewController.swift | |
// Journal-Calendar-Demo | |
// | |
// Created by Seb Vidal on 30/04/2024. | |
// | |
import UIKit | |
class ViewController: UIViewController { |
import SwiftUI | |
struct LoadingView: View { | |
@State var theta: Double = 0 | |
let radius: Double = 60 | |
var body: some View { | |
ZStack { | |
ForEach(0..<8) { index in | |
let offset = ((2 * .pi) * Double(index)) / 8 |