궁금한 내용을 검색해보세요!
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
서근 개발노트
티스토리에 팔로잉
SWIFTUI/View layout

SwiftUI : Label(사용자 라벨스타일 만들기)

서근
QUOTE THE DAY

“ 당신이 6개월 이상 한 번도 보지 않은 코드는 다른 사람이 다시 만드는 게 훨씬 더 나을 수 있다. ”

- 이글슨 (Eagleson)
Written by SeogunSEOGUN

SwiftUI : Label(사용자 라벨스타일 만들기)

 

Label에 대해 알아보도록 합시다.

Label

swift
UNFOLDED
Label("some string", systemImage: "some SF Symbols")
swift
UNFOLDED
Label {
Text("some text")
} icon : {
Image(systemName: "some image")
}

SwiftUI에서 가장 일반적이고 인식 가능한 User interface의 구성 요소 중 하나는 아이콘과 레이블의 조합입니다.

이 관용구는 여러 종류의 앱에 사용되고 collection, list, menu 의 액션 아이템 등에 표시됩니다.

 

그러면 SF Symbols를 사용하여 간단한 형식의 레이블을 만들어 보도록 하겠습니다.

swift
UNFOLDED
List {
//1. 기본적인 레이블
Label("나의 계정", systemImage: "person.crop.circle")
swift
UNFOLDED
//2. 제목만 표시하는 레이블 스타일
Label("Wi-Fi", systemImage: "wifi")
.labelStyle(TitleOnlyLabelStyle())
swift
UNFOLDED
//3. 아이콘만 표시하는 레이블 스타일
Label("Wi-Fi", systemImage: "wifi")
.labelStyle(IconOnlyLabelStyle())
swift
UNFOLDED
//4. 레이블 크기 변경
Label("개인용 핫스팟", systemImage: "personalhotspot")
//.font(.largeTitle)
.font(.system(size: 30))
swift
UNFOLDED
//5. 텍스트와 이미지 각각 커스튬
Label {
Text("에어팟")
.foregroundColor(Color.orange)
} icon : {
Image(systemName: "airpodspro")
.foregroundColor(Color.blue)
}
swift
UNFOLDED
//6. 사용자 이미지 사용
Label {
Text("서근 개발블로그")
.font(.system(size: 16))
} icon : {
Image("welcome")
.resizable()
.scaledToFit()
.frame(width: 30)
}
swift
UNFOLDED
//7. 라벨 이미지 대신 도형넣기
Label {
Text("서근 개발블로그")
.foregroundColor(.blue)
} icon : {
Capsule().frame(width: 20, height: 30)
.foregroundColor(.black)
}
swift
UNFOLDED
//8. 라벨 이미지 대신 도형넣기-2
Label {
Text("서근")
.foregroundColor(.primary)
.font(.largeTitle)
.padding()
.background(Color.yellow.opacity(0.3))
.clipShape(Capsule())
.padding(-10)
} icon: {
RoundedRectangle(cornerRadius: 32)
.fill(Color.blue)
.frame(width: 64, height: 64)
}

SwiftUI : Label(사용자 라벨스타일 만들기) - Label

Label style

기본 Label Style 종류

TIP
 
 

TitleAndIconLabelStyle() iOS 14.5에서만 사용할 수 있습니다.

사용자 지정

레이블을 완전하게 사용자 지정하거나 완전하게 새로운 레이블 Style을 만드려면 LabelStyle 프로토콜을 구현해야 합니다.

swift
UNFOLDED
struct MyCustomLabelStyle: LabelStyle {
func makeBody(configuration: Configuration) -> some View {
// Your custom code here
}
}

이러한 기본값에 사용자가 원하는 코드를 추가해줘야 합니다.

레이블 배경색 추가 (Label Style)

레이블 주변에 padding을 추가하고 배경색을 원한는 색으로 만드는 프로토콜을 만들어 보겠습니다.

 

레이블 배경색 Code

swift
UNFOLDED
//사용자 레이블 스타일 생성
struct YellowBackgroundLabelStyle: LabelStyle {
func makeBody(configuration: Configuration) -> some View {
Label(configuration)
.padding()
.background(Color.yellow)
.cornerRadius(20)
}
}

이제 이 LabelStyle을 적용 시켜주겠습니다.

swift
UNFOLDED
//9. 사용자 레이블 스타일 적용
Label("사용자 레이블 스타일 지정 (1)", systemImage: "paperplane.circle.fill")
.labelStyle(YellowBackgroundLabelStyle())
//9-1
Label {
Text("사용자 레이블 스타일 지정 (2)")
} icon : {
Image(systemName: "paperplane.circle.fill")
} //레이블스타일은 레이블 밖에서 작성해야한다.
.labelStyle(YellowBackgroundLabelStyle())

SwiftUI : Label(사용자 라벨스타일 만들기) - Label style - 사용자 지정 - 레이블 배경색 추가 (Label Style)

Vertical 레이블 추가 (Label Style)

레이블 요소를 다시 정렬하여 수직으로 쌓아 올리는 스타일을 만들어 보도록 하겠습니다.

VStack을 사용해서 뷰를 구현 할 수 있습니다.

 

Vertical 레이블 Code

swift
UNFOLDED
// 사용자 레이블 스타일 생성 - Vertical 레이블 스타일 생성
struct VerticalLabelStyle: LabelStyle {
func makeBody(configuration: Configuration) -> some View {
VStack {
configuration.icon
.padding(5)
configuration.title
}
}
}

이제 이 LabelStyle을 적용 시켜주겠습니다.

swift
UNFOLDED
//10. vertical 레이블
Label {
Text("수직 레이블뷰")
} icon : {
Image(systemName: "moon.fill")
}
.labelStyle(VerticalLabelStyle())

SwiftUI : Label(사용자 라벨스타일 만들기) - Label style - 사용자 지정 - Vertical 레이블 추가 (Label Style)

아이콘에 컬러를 추가해주는 레이블 추가 (Label Style)

아이콘 안에 컬러를 추가해주는 레이블 스타일을 만들어 주겠습니다.

 

Colorful Icon 레이블 Code

swift
UNFOLDED
struct Settings: View {
//반드시 CGFloat을 추가해줘야 합니다.
@ScaledMetric var size: CGFloat = 1
var body: some View {
}
swift
UNFOLDED
// 사용자 레이블 스타일 생성 - Colorful아이콘 스타일
struct ColorfulIconLabelStyle: LabelStyle {
var color: Color
var size: CGFloat
func makeBody(configuration: Configuration) -> some View {
Label {
configuration.title
} icon: {
configuration.icon
.imageScale(.small)
.foregroundColor(.white)
.background(RoundedRectangle(cornerRadius: 7 * size).frame(width: 28 * size, height: 28 * size).foregroundColor(color))
}
}
}

이제 이 LabelStyle을 적용 시켜주겠습니다.

swift
UNFOLDED
Section {
//11. 아이콘에 색상 추가
Label("Airplane Mode", systemImage: "airplane").labelStyle(ColorfulIconLabelStyle(color: .orange, size: size))
Label("Wi-Fi", systemImage: "wifi").labelStyle(ColorfulIconLabelStyle(color: .blue, size: size))
Label("Bluetooth", systemImage: "airpodspro").labelStyle(ColorfulIconLabelStyle(color: .blue, size: size))
Label("Cellular", systemImage: "antenna.radiowaves.left.and.right").labelStyle(ColorfulIconLabelStyle(color: .green, size: size))
Label("Personal Hotspot", systemImage: "personalhotspot").labelStyle(ColorfulIconLabelStyle(color: .green, size: size))
}
Section {
Label("Notifications", systemImage: "app.badge").labelStyle(ColorfulIconLabelStyle(color: .red, size: size))
Label("Sounds & Haptics", systemImage: "speaker.wave.3.fill").labelStyle(ColorfulIconLabelStyle(color: .red, size: size))
Label("Do not disturb", systemImage: "moon.fill").labelStyle(ColorfulIconLabelStyle(color: .purple, size: size))
Label("Display time", systemImage: "hourglass").labelStyle(ColorfulIconLabelStyle(color: .purple, size: size))
}

SwiftUI : Label(사용자 라벨스타일 만들기) - Label style - 사용자 지정 - 아이콘에 컬러를 추가해주는 레이블 추가 (Label Style)
SwiftUI : Label(사용자 라벨스타일 만들기) - Label style - 사용자 지정 - 아이콘에 컬러를 추가해주는 레이블 추가 (Label Style)

 

읽어주셔서 감사합니다🤟

 

본 게시글의 전체코드 GitHub 👇🏻

 

Seogun95/SwiftUI_Label_TUT

Label과 LabelStyle에 대해 알아봅시다. Contribute to Seogun95/SwiftUI_Label_TUT development by creating an account on GitHub....

github.com

참고하면 좋은 게시글👇🏻

 

SwiftUI : List Style

본 게시물은 Zedd님의 게시물을 인용하여 작성되었습니다. List Style에 대해 알아보도록 합시다. listStyle을 사용하기위해서는 List { ... } .listStyle(____()) 처럼 리스트 밖에 스타일을 추가해줘야 합니...

seons-dev.tistory.com

 


잘못된 내용이 있으면 언제든 피드백 부탁드립니다.

'SWIFTUI > View layout' 카테고리의 다른 글

SwiftUI : ColorPicker  (0) 2021.02.07
SwiftUI : ProgressView (작업 진행률) 타이머  (0) 2021.02.07
SwiftUI : Lazy V(H)Stack  (0) 2021.02.06
SwiftUI : SearchView  (0) 2021.02.03
SwiftUI : Slider  (0) 2021.02.01


서근


위처럼 이미지 와 함께 댓글을 작성할 수 있습니다.