본문 바로가기

SwiftUI

[SwiftUI] Image (2)

 

저번 포스팅에 이어 image를 다루는 두번째 시간이 되겠다.

 

SwiftUI에서는 clipShape 수식어를 사용해서 

image를 원하는 모양으로 만들 수 있다.

전달인자에 Circle을 초기화 해주면 

원형의 image로 바뀌는걸 볼 수 있다.

 

cornerRadius를 설정하기 위한

imageView.width의 / 2와 maskToBounds 같은 코드는

더이상 필요하지 않다.

Image("swiftui")
                .resizable()
                .clipShape(Circle())
                .frame(width: 100, height: 100, alignment: .center)

 

 

 

image의 렌더링 모드는 

template랑 original 이라는 모드로 

2가지가 사용된다.

 

template

image의 불투명 영역이 가진 본래의 색을 무시하고 

원하는 색으로 변경해 템플릿 image로 활용할 수 있게 하고

 

origianl은 항상 image 본래의 색을 유지시킨다고 한다.

HStack(content: {
            Image("swiftui")
                .resizable()
                .renderingMode(.none) // default
                .frame(width: 100, height: 100, alignment: .center)
            Image("swiftui")
                .resizable()
                .renderingMode(.original) // image 본래의 색을 유지
                .frame(width: 100, height: 100, alignment: .center)
            Image("swiftui")
                .resizable()
                .renderingMode(.template) // image 본래의 색을 무시하여 templete 으로 사용 가능
                .frame(width: 100, height: 100, alignment: .center)
                // .foregroundColor(.red) - 색생 변경 가능
        })

 

 

 

SF Symbols

 

애플에서 직접 만들고 제공하는 image들의 모음집이 있다.

SF Symbols라는 건데 

필자는 현재 UIKit 으로 작업할때도

애용하는 툴이다.

간단한 네비게이션 바버튼이나

버튼의 image를 설정해야 할때 

아주 요놈이다.

 

 

image의 systemName에

원하는 symbol의 name을 전달해 주면

아래와 같이 

손쉽게 image를 표현해줄 수 있다.

HStack(content: {
            Image(systemName: "pencil")
                .resizable()
                .renderingMode(.none)
                .frame(width: 100, height: 100, alignment: .center)
            Image(systemName: "pencil.circle")
                .resizable()
                .renderingMode(.original)
                .foregroundColor(.red)
                .frame(width: 100, height: 100, alignment: .center)
            Image(systemName: "pencil.slash")
                .resizable()
                .renderingMode(.template)
                .frame(width: 100, height: 100, alignment: .center)
                .foregroundColor(.red)
        })

 

 

 

혹은 imageScale 이나

font로 크기를 변경할 수도 있고

HStack(alignment: .center, spacing: 30, content: {
            Image(systemName: "pencil")
                .imageScale(.small)
            Image(systemName: "pencil")
                .imageScale(.medium)
            Image(systemName: "pencil")
                .imageScale(.large)
            Image(systemName: "pencil")
                .font(.title)
            Image(systemName: "pencil")
                .font(.system(size: 40))
            Image(systemName: "pencil")
                .imageScale(.large)
                .font(.system(size: 40))
        })

 

 

 

굵기 설정 또한 가능하다

Image(systemName: "pencil")
                .imageScale(.large)
                .font(Font.title.weight(.black))
            Image(systemName: "pencil")
                .imageScale(.large)
                .font(Font.title.weight(.bold))
            Image(systemName: "pencil")
                .imageScale(.large)
                .font(Font.title.weight(.heavy))
            Image(systemName: "pencil")
                .imageScale(.large)
                .font(Font.title.weight(.light))
            Image(systemName: "pencil")
                .imageScale(.large)
                .font(Font.title.weight(.semibold))

 

 

 

'SwiftUI' 카테고리의 다른 글

[SwiftUI] Stack  (0) 2021.01.08
[SwiftUI] Image (1)  (0) 2020.12.31
[SwiftUI] Text  (0) 2020.12.28
[SwiftUI] Hello SwiftUI  (0) 2020.12.26