SwiftUI/Views
[SwiftUI] Label의 스타일 커스텀하기
_히처리_
2023. 8. 23. 12:06
다음은Label에 동일하게 적용되는 공통 스타일을 사용자 정의 LabelStyle을 만들고, LabelStyle에 사용자 정의 스타일을 확장하고 사용하는 예제이다.
import SwiftUI
struct TrailingIconLabelStyle: LabelStyle {
func makeBody(configuration: Configuration) -> some View {
HStack {
configuration.title
configuration.icon
}
}
}
extension LabelStyle where Self == TrailingIconLabelStyle {
static var trailingIcon: Self { Self() }
}
확장에서 보면 where Self == TrailingIconLabelStyle 구문이 특이하다. 이렇게 작성하면 LabelStyle이 trailingIcon을 사용할 때에만 해당 확장이 적용된다고 한다.
이렇게 만들어진 LabelStyle은 다음과 같이 사용하면 된다.
Label("\(scrum.lengthInMinutes)", systemImage: "clock")
.labelStyle(.trailingIcon)