![見出し画像](https://assets.st-note.com/production/uploads/images/136322203/rectangle_large_type_2_1d565751f3e55330d1c98060e340b896.png?width=1200)
SwiftUIのチュートリアルを試す(Button) - 3
さらにサイコロを追加できるようにして、レイアウトも整えて行きます。
Button("Add Dice") {
numberOfDice += 1
}
.disabled(numberOfDice == 5)
実行すると崩れます。
![](https://assets.st-note.com/img/1712350657134-poCEa9ZDun.png?width=1200)
これを綺麗にするには
DiceView()を編集します。(ContentView()ではなく)
Image(systemName: "die.face.\(numberOfPips)")
のモディファイアを変更、追加します。
width →maxWidth、height → maxHeight
.aspectRatio(1, contentMode: .fit) 追加
して以下とします。
struct DiceView: View {
@State var numberOfPips: Int = 1
var body: some View {
VStack {
Image(systemName: "die.face.\(numberOfPips)")
.resizable()
.frame(maxWidth: 100, maxHeight: 100)
.aspectRatio(1, contentMode: .fit)
Button("Roll") {
numberOfPips = Int.random(in: 1...6)
}
}
}
}
![](https://assets.st-note.com/img/1712351262366-P9joJBE4WA.png?width=1200)
Button("Remove Dice", systemImage: "minus.circle.fill")
Button("Add Dice", systemImage: "plus.circle.fill")
![](https://assets.st-note.com/img/1712383628561-m6PX3q0xSp.png?width=1200)
これをアイコンだけにするにはモディファイアをつけます。
.labelStyle(.iconOnly)
ボタンのコード全体は
HStack {
Button("Remove Dice", systemImage: "minus.circle.fill") {
numberOfDice -= 1
}
.disabled(numberOfDice == 1)
Button("Add Dice", systemImage: "plus.circle.fill") {
numberOfDice += 1
}
.disabled(numberOfDice == 5)
}
.padding()
.labelStyle(.iconOnly)
.font(.title)
![](https://assets.st-note.com/img/1712383847302-gfJOubccuA.png?width=1200)