반응형
이번에는 저번에 배운 뷰의 조건, 커스텀등을 이전 프로젝트에 적용시키는 과제 이다.
//Go back to project 1 and use a conditional modifier to change the total amount text view to red if the user selects a 0% tip.
// 수정부분 foregroundColor 부분 추가!
Section("전체 금액") {
Text(totalAmount, format: .currency(code: Locale.current.currency?.identifier ?? "USD" ))
.foregroundColor(tipPercentage == 0 ? Color.red : Color.black)
}
배운데로 삼항 연산자 사용!
//Go back to project 2 and replace the Image view used for flags with a new FlagImage() view that renders one flag image using the specific set of modifiers we had
//FlagImage 구조체를 선언하고!
struct FlagImage: View {
var flagName:String
var body: some View {
Image(flagName)
.clipShape(.capsule)
.shadow(radius: 5)
}
}
//기존 깃발을 그리는 Image 부분을 교체한다.
FlagImage(flagName: countries[number])
/*
Image(countries[number])
.clipShape(.capsule)
.shadow(radius: 5)
*/
깔끔하게 변경! 재활용도 가능!
//Create a custom ViewModifier (and accompanying View extension) that makes a view have a large, blue font suitable for prominent titles in a view.
//ViewModifier protocol을 이용하여 만든다음 extension으로 Text 확장
extension Text {
public func awesome() -> some View {
modifier(AwesomeModifier())
}
}
struct AwesomeModifier: ViewModifier {
func body(content: Content) -> some View {
content
.font(.largeTitle)
.foregroundColor(Color.blue)
}
}
//평범한 글을 비범하게 쓴다!
Text("평범한 글입니다.")
.awesome()
애플의 착시 효과인지, swift는 front를 그리는데 완벽한 구조를 가지고 있는거 같다 ㅡㅜㅡ;; 우옹
반응형