apple/SwiftUI & Combine

[SwiftUI] ViewModifier

lgvv 2022. 6. 2. 16:03

ViewModifier

✅ 공식문서

https://developer.apple.com/documentation/swiftui/viewmodifier

 

Apple Developer Documentation

 

developer.apple.com

 

✅ 공석문서의 일부

공식문서

 

✅ 이를 통해서 중복되는 코드를 쉽게 줄일 수 있습니다.

import SwiftUI

struct ContentView: View {
    
    var body: some View {
        
        VStack(spacing: 50){
            Text("Hello, world!")
                .modifier(MyRoundedText()) // modifier를 활용
            Text("Hello, world!")
                .myRoundedTextStyle()
            Image(systemName: "pencil") // 함수를 활용
                .myRoundedTextStyle()
            Rectangle()
                .frame(width: 100, height: 100)
                .myRoundedTextStyle()
        }
        
    }
}

// 뷰를 꾸며주는 모디파이어
struct MyRoundedText: ViewModifier {
    
    func body(content: Content) -> some View { // content는 내가 받아온 속성에 대한 정보
        content
            .font(.largeTitle)
            .padding()
            .background(Color.init(#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)))
            .cornerRadius(20)
            .padding()
            .overlay(
                RoundedRectangle(cornerRadius: 25).stroke(lineWidth: 10).foregroundColor(.blue)
            )
    }
}

extension View {
    func myRoundedTextStyle() -> some View {
        modifier(MyRoundedText())
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

 

결과물