ConnectedBalls

  • POSTS
このコードは、iOSアプリケーションで球体のシミュレーションを描画するためのSwiftUIビューを定義しています。具体的には、ランダムに配置された複数の球体を、重力の影響を受けながら運動させ、衝突検出を行い、最も近い球体に線を引くように設計されています。 このコードは、Ball構造体を使用して球体の状態を表し、CoreMotionフレームワークを使用してデバイスの加速度を監視し、加速度に応じて球体の運動を変更するようになっています。 また、Canvasビューを使用して球体の描画を行い、UIKitのタイマーを使用して定期的に球体の位置を更新しています。さらに、衝突検出には、距離と速度を計算するためのベクトル演算を使用しています。 このコードは、iOSアプリケーションの開発者が、球体の物理シミュレーションを実装するための役立つサンプルとして活用できます。 import SwiftUI import CoreMotion struct Ball { var position: CGPoint var velocity: CGVector var acceleration: CGVector var mass: CGFloat } extension CGVector { func normalized() -> CGVector { let magnitude = sqrt(dx * dx + dy * dy) return CGVector(dx: dx / magnitude, dy: dy / magnitude) } func dot(_ other: CGVector) -> CGFloat { return dx * other.dx + dy * other.dy } } func * (left: CGVector, right: CGFloat) -> CGVector { return CGVector(dx: left.

Swiftオーディオレベルメーター

  • POSTS
このコードは、iOSアプリの画面上に音声レベルメーターを表示するためのSwiftUIビューを定義しています。 具体的には、AVFoundationフレームワークを使用して、デバイスのマイクからの入力を取得し、その音声レベルを取得しています。その後、音声レベルを示すProgressBarビューを表示しています。 AudioRecorderクラスは、AVAudioEngineをセットアップして入力ノードに接続し、音声レベルを取得するためにAVAudioPCMBufferを使用してバッファにインストールされたタップを開始します。 ContentViewビューは、audioRecorderオブジェクトを保持し、音声レベルを表示するためにテキストビューを使用し、音声レベルの値に基づいてProgressBarビューを更新しています。 このコードは、iOSアプリの開発者が、音声入力を使用してオーディオレベルを監視するための役立つサンプルとして利用できます。 import SwiftUI import AVFoundation import Combine let minValue: Float = 0.00 let maxValue: Float = 0.005 struct ProgressBar: View { var value: Float var body: some View { GeometryReader { geometry in let clampedValue = min(max(value, minValue), maxValue) let normalizedValue = (clampedValue - minValue) / (maxValue - minValue) ZStack(alignment: .leading) { Rectangle() .frame(width: geometry.size.width, height: geometry.size.height) .opacity(0.3) Rectangle() .frame(width: geometry.size.width * CGFloat(normalizedValue), height: geometry.size.height) .