SwiftUI Essentials (SwiftUI の本質)

パスとシェイプの描画





訳注:以下、必要な場所においては Mac と iPhone 両方のセクションを提供しています。
Mac → セクション 3、iPhone → セクション 103 とします。










    BadgeSymbol.swift


  1. import SwiftUI
  2. struct BadgeSymbol: View {
  3. var body: some View {
  4. Text("Hello, World!")
  5. }
  6. }
  7. struct BadgeSymbol_Previews: PreviewProvider {
  8. static var previews: some View {
  9. BadgeSymbol()
  10. }
  11. }



5 行目を以下のように書き足します。



    BadgeSymbol.swift


  1. import SwiftUI
  2. struct BadgeSymbol: View {
  3. var body: some View {
  4. GeometryReader { geometry in
  5. Path { path in
  6. let width = min(geometry.size.width, geometry.size.height)
  7. let height = width * 0.75
  8. let spacing = width * 0.030
  9. let middle = width * 0.5
  10. let topWidth = width * 0.226
  11. let topHeight = height * 0.488
  12. path.addLines([
  13. CGPoint(x: middle, y: spacing),
  14. CGPoint(x: middle - topWidth, y: topHeight - spacing),
  15. CGPoint(x: middle, y: topHeight / 2 + spacing),
  16. CGPoint(x: middle + topWidth, y: topHeight - spacing),
  17. CGPoint(x: middle, y: spacing)
  18. ])
  19. }
  20. }
  21. }
  22. }
  23. struct BadgeSymbol_Previews: PreviewProvider {
  24. static var previews: some View {
  25. BadgeSymbol()
  26. }
  27. }



プレビューその 1



上記のリストの 21 行目に以下のように書き足します。



    BadgeSymbol.swift


  1. CGPoint(x: middle, y: spacing)
  2. ])
  3. path.move(to: CGPoint(x: middle, y: topHeight / 2 + spacing * 3))
  4. path.addLines([
  5. CGPoint(x: middle - topWidth, y: topHeight + spacing),
  6. CGPoint(x: spacing, y: height - spacing),
  7. CGPoint(x: width - spacing, y: height - spacing),
  8. CGPoint(x: middle + topWidth, y: topHeight + spacing),
  9. CGPoint(x: middle, y: topHeight / 2 + spacing * 3)
  10. ])
  11. }
  12. }
  13. }
  14. }



プレビューその 2



上記のリスト 4 行目、30 行目を以下のように書き足します。



    BadgeSymbol.swift


  1. import SwiftUI
  2. struct BadgeSymbol: View {
  3. static let symbolColor = Color(red: 79.0 / 255, green: 79.0 / 255, blue: 191.0 / 255)
  4. var body: some View {



  1. CGPoint(x: middle, y: topHeight / 2 + spacing * 3)
  2. ])
  3. }
  4. .fill(Self.symbolColor)
  5. }
  6. }
  7. }



プレビューその 3



    RotatedBadgeSymbol.swift


  1. import SwiftUI
  2. struct RotatedBadgeSymbol: View {
  3. let angle: Angle
  4. var body: some View {
  5. BadgeSymbol()
  6. .padding(-60)
  7. .rotationEffect(angle, anchor: .bottom)
  8. }
  9. }
  10. struct RotatedBadgeSymbol_Previews: PreviewProvider {
  11. static var previews: some View {
  12. RotatedBadgeSymbol(angle: Angle(degrees: 5))
  13. }
  14. }



プレビューその 4



セクション 1セクション 2
セクション 3セクション 4
セクション 101セクション 102
セクション 103セクション 104




目次
Xcode の新機能

フレームワーク

  • SwiftUI

  • ビューの作成と結合

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5

    セクション 6


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    セクション 106

    ビルドリストとナビゲーション

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5

    セクション 6

    セクション 7

    セクション 8


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    セクション 106

    セクション 107

    セクション 108

    ユーザー入力の処理

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5

    セクション 6


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    セクション 106

    パスとシェイプの描画

    セクション 1

    セクション 2

    セクション 3

    セクション 4


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    ビューと移行のアニメーション

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    複雑なインターフェースの構成

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    UI コントロールを扱う

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    UIKit とのインターフェース

    セクション 1

    セクション 2

    セクション 3

    セクション 4


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    watchOS アプリの作成

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    macOS アプリの作成

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5

    セクション 6

    セクション 7


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    セクション 106

    セクション 107