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と同じ
プログラミングの原理原則は他の言語と同じだから、コツを掴めばいけそうやな