본문 바로가기
IT/swift

100 days of SwiftUI - Day24

by 가능성1g 2024. 11. 20.
반응형

이번에는 저번에 배운 뷰의 조건, 커스텀등을 이전 프로젝트에 적용시키는 과제 이다.

//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를 그리는데 완벽한 구조를 가지고 있는거 같다 ㅡㅜㅡ;; 우옹

 

반응형