(2021/08/19 更新)
SwiftUIに標準で用意されている組み込み図形描画の部品を紹介します。
これらの部品はShapeプロトコルに準じています。
環境
この記事の情報は次のバージョンで動作確認しています。
【Xcode】12.5RC
【Swift】5.4
【iOS】14.5
【macOS】Big Sur バージョン 11.5.2
【Swift】5.4
【iOS】14.5
【macOS】Big Sur バージョン 11.5.2
四角形(Rectangle)
| 1 2 3 | Rectangle() | 
四角形を描画します。
塗りつぶしに使うViewの指定は.fill()、サイズの指定は.frame()で行います。
指定が無いときは、デフォルト色(Color.primary)と既存のframeサイズが適用されます。
この2つのModifierの扱いについては、他の図形部品でも同様です。
使用例
| 1 2 3 4 5 6 7 8 9 10 11 | struct ContentView: View {     var body: some View {         // 四角形の描画         Rectangle()             .fill(Color.blue)               // 図形の塗りつぶしに使うViewを指定             .frame(width:200, height: 150)  // フレームサイズ指定     } } | 
グラデーションでの塗りつぶし
塗りつぶしには、Colorの代わりにGradient(グラデーション)系のViewも指定可能です。
| 1 2 3 4 5 6 7 8 9 10 11 12 | struct ContentView: View {     // グラデーションの定義     let gradient = LinearGradient(gradient: Gradient(colors: [.blue, .black]), startPoint: .topLeading, endPoint: .bottomTrailing)     var body: some View {         Rectangle()             .fill(gradient)               // 図形の塗りつぶしに使うViewを指定             .frame(width:200, height: 150)     } } | 
角丸四角形(RoundedRectangle)
| 1 2 3 | RoundedRectangle(cornerRadius: 円の半径) | 
角が丸い四角形を描画します。
引数(cornerRadius)で円の半径を指定します。
| 1 2 3 | RoundedRectangle(cornerSize: .init(width: 横半径, height: 縦半径)) | 
角を楕円で丸めた四角形を描画します。
引数(cornerSize)で楕円の横半径、縦半径を指定します。
使用例
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | struct ContentView: View {     var body: some View {         HStack {             // 角が円の四角形             RoundedRectangle(cornerRadius: 30)                 .fill(Color.blue)                 .frame(width:200, height: 150)             // 角が楕円の四角形             RoundedRectangle(cornerSize: .init(width: 60, height: 30))                 .fill(Color.red)                 .frame(width:200, height: 150)         }     } } | 
カプセル形(Capsule)
| 1 2 3 | Capsule() | 
左右がちょうど半円になるカプセル型の四角形を描画します。
使用例
| 1 2 3 4 5 6 7 8 9 10 11 | struct ContentView: View {     var body: some View {         // カプセル型の描画         Capsule()             .fill(Color.blue)             .frame(width:250, height: 150)     } } | 
円形(Circle)
| 1 2 3 | Circle() | 
円を描画します。
フレームサイズにぴったり収まる真円が描かれます。
使用例
| 1 2 3 4 5 6 7 8 9 10 11 | struct ContentView: View {     var body: some View {         // 円形の描画         Circle()             .fill(Color.blue)             .frame(width:250, height: 200)     } } | 
楕円形(Ellipse)
| 1 2 3 | Ellipse() | 
楕円を描画します。
フレームサイズに応じた楕円が描かれます。
使用例
| 1 2 3 4 5 6 7 8 9 10 11 | struct ContentView: View {     var body: some View {         // 楕円形の描画         Ellipse()             .fill(Color.blue)             .frame(width:250, height: 200)     } } | 
図形の輪郭描画
図形の輪郭線を描くにはstrokeモディファイアを使用します。
使い方は、こちらの記事を参照してください。

【SwiftUI】図形の輪郭描画(stroke)
(2020/8/22 更新) 図形の輪郭を描画する.stroke()の使い方を解説します。
図形に文字を重ねる
図形と文字を重ねるには、次のように.overlay()モディファイアか.background()モディファイアを使用します。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | struct ContentView: View {     var body: some View {         HStack(spacing: 50) {             // 文字の重ね合わせ(overlay)             Capsule()                 .fill(Color.blue)                 .frame(width:250, height: 70)                 .overlay(Text("カピ通信")                             .font(.largeTitle)                             .fontWeight(.bold)                             .foregroundColor(.white)                 )             // 文字の重ね合わせ(background)             Text("SwiftUI")                 .font(.largeTitle)                 .fontWeight(.bold)                 .background(Circle()                                 .fill(Color.yellow)                                 .frame(width:150, height:150))         }     } } | 

(アーカイブ)【SwiftUI】Viewの背景設定と重ね合わせ
本記事の説明はiOS14以前の使用方法です、iOS15以降の情報は、またはを参照してください。 Viewの背景設定と、別のViewを重ねる方法を解説します。
あわせて読みたい記事

【SwiftUI】カスタムShapeの作り方
独自の図形部品を作る方法を解説します。

【SwiftUI】グラデーションの使い方
(2021/09/12 更新) グラデーションとは、連続した階調で色調や透明度が変化していく色の指定を指します。 SwiftUIでは線形、放射状、円すい状の3種類のグラデーションが使えます。 これらのグラデーションはすべて、Viewとして単...

【SwiftUI】Viewのフレームサイズ指定(frame)
(2022/03/26 更新) Viewのフレームサイズを指定する方法を解説します。

 
  
  
  
  







