HStackは横方向にViewをレイアウトする
Assets.xcassets に画像を配置する
### 背景画像の配置
var body: some View { ZStack { Image("background") .resizable() .ignoresSafeArea() .aspectRatio(contentMode: .fill) } }
HStackで配置
ZStack { Image("background") .resizable() .ignoresSafeArea() .aspectRatio(contentMode: .fill) HStack { Button(action: {}){ Image("cymbal") } Button(action: {}){ Image("guitar") } } } }
### mp3ファイルの取り込み
音源ファイルを読み込み、タップされたら音源を鳴らす
mp3をAssets.xcassetsに配置する
TargetMembershipがMyMusicになっている
### SoundPlayer.swifを追加
New Fileで Cocoa Touch Class を追加する
SoundPlayer: NSObject を追加する
iOSで音を鳴らすにはAVFoundationを読み込む
AVAudioPlayer は do catchで書く
import UIKit import AVFoundation class SoundPlayer: NSObject { let cymbalData = NSDataAsset(name: "cymbalSound")!.data var cymbalPlayer: AVAudioPlayer! func cymbalPlay() { do { cymbalPlayer = try AVAudioPlayer(data: cymbalData) cymbalPlayer.play() } catch { print("シンバルでエラーが発生しました!") } } }
ContentView.swiftで呼び込む
struct ContentView: View { let soundPlayer = SoundPlayer() var body: some View { ZStack { Image("background") .resizable() .ignoresSafeArea() .aspectRatio(contentMode: .fill) HStack { Button(action: { soundPlayer.cymbalPlay() }){ Image("cymbal") } Button(action: {}){ Image("guitar") } } } } }
### 同じようにguitarも追加
SoundPlayer.swift
class SoundPlayer: NSObject { let cymbalData = NSDataAsset(name: "cymbalSound")!.data var cymbalPlayer: AVAudioPlayer! let guitarData = NSDataAsset(name: "guitarSound")!.data var guitarPlayer: AVAudioPlayer! func cymbalPlay() { do { cymbalPlayer = try AVAudioPlayer(data: cymbalData) cymbalPlayer.play() } catch { print("シンバルでエラーが発生しました!") } } func guitarPlay() { do { guitarPlayer = try AVAudioPlayer(data: guitarData) guitarPlayer.play() } catch { print("ギターでエラーが発生しました!") } } }
ContentView.swiftはcymbalと同じ
プログラミングの原理原則は他の言語と同じだから、コツを掴めばいけそうやな