[SwiftUI] ViewModifier 를 이용한 View 익스텐션 활용

반응형

▼ 스위프트 UI는 선언형 UI를 사용합니다. 예를 들면 다음과 같이 Color.red 에 .ignoresSafeArea() 라는 ViewModifier를 추가해서 화면에 SafeArea를 포함해서 전체화면을 빨간색으로 채울 수 있습니다. 마찬가지로 .frame을 이용해서 화면 사이즈를 변경할 수도 있습니다.

ignoresSafeArea


 

 

 

 이번에는 ZStack을 사용해서 Color와 Text를 중첩해서 표현하겠습니다. ZStack의 alignment를 .bottomTrailing 옵션으로 Text를 우측 하단에 포함시킵니다. Text에도 역시 font, foregroundColor 와 같은 다양한 modifer가 추가되어있습니다. 때문에 코드가 복잡해지고 재사용하기 힘든 코드가 됩니다.

ZStack


 

 

 

ViewModifier를 확장한 Watermark Struct를 만들었습니다. text 라는 변수를 선언하고 body 부분에 ZStack을 구성합니다. body(content: Content) 를 보면 파라미터로 Content 타입을 받는 것을 볼 수 있습니다. 이 부분이 modifer의 대상 컨텐츠가 됩니다. 


 

 

 

▼ 이제 처음 코드로 돌아가 Color.red에 .modifer(Watermark(text: "스위프트 UI") 를 추가해주면 간결하게 동일한 화면을 렌더링 할 수 있습니다.


 

 

 

▼ 이제 extension을 이용해서 간단하게 사용해보도록 하겠습니다. View에 대한 익스텐션을 만들고 wartermarked 라는 함수를 하나 추가합니다.


 

 

 

▼ 이제는 .watermarked 라고만 치면 어떤 뷰에서든지 Watermark 를 쉽게 사용할 수 있습니다. 이렇게 사용하면 과정은 조금 복잡하지만 동일한 형태의 화면을 좀 더 재 사용하기 쉽게 만들 수 있고 코드를 간결하게 만들 수 있습니다.


 

 

 

반응형

댓글

Designed by JB FACTORY