Access control
-
private
doesn't allow anyone outside the struct/class access it -
private(set)
means that setting is private but reading is not meaning that anyone can read it
ViewBuilder (12:05)
@ViewBuilder
can be added to any function that returns a view. If there is a list of views it combines them into one.
"The contents of a @ViewBuilder
is a list of Views. No need to type return
. Cannot use var
s.
@ViewBuilder func front(of card: Card) -> some View { RoundedRectangle(cornerRadius: 10) RoundedRectangle(cornerRadius: 10).stroke() Text(card.content) }
Shape (20:22)
CG
= Core Graphics
import SwiftUI struct Pie: Shape { var startAngle: Angle var endAngle: Angle var clockwise: Bool = false func path(in rect: CGRect) -> Path { let center = CGPoint(x: react.midX, y: react.midY) let radius = min(rect.width, rect.height) / 2 let start = CGPoint( x: center.x + radius * cos(CGFloat(startAngle.radians)), y: center.y + radius * sin(CGFloat(startAngle.radians)) ) var p = Path() p.move(to: center) p.addLine(to: start) p.addArc( center: center, radius: radius, startAngle: startAngle, endAngle: endAngle, clockwise: clockwise ) p.addLine(to: center) return p }
- 0 degrees is to right
- 0x0 is in left top corner and increases by going down and right
ViewModifier (41:54)
- There are two things that can be animated: shapes and views.
- Animating views happens in ViewModifier
- Modifier can for example make any view to look like a card, cardify
Text("Ghost").modifier(Cardify(isFaceUp: true)) struct Cardify: ViewModifier { var isFaceUp: Bool func body(content: Content) -> some View { ZStack { if isFaceUp { RoundedRectangle(cornerRadius: 10).fill(Color.white) RoundedRectangle(cornerRadius: 10).stroke() content } else { RoundedRectangle(cornerRadius: 10) } } } }
Text("Ghost").cardify(isFaceUp: true) extension View { func cardify(isFaceUp: Bool) -> some View { return self.modifier(Cardify(isFaceUp: isFaceUp)) } }
Top comments (0)