[iOS/SwiftUI] 버튼 아이콘 색 설정하기 .tint (.accentColor)

2025. 11. 15.



Button(action: viewModel.sendMessage) {
    Image(systemName: "paperplane.fill")
        .font(.system(size: 26))
}
.disabled(viewModel.inputText.trimmingCharacters(in: .whitespaces).isEmpty)
//채팅창에 텍스트가 있을 때에만 버튼 활성화
//viewModel 부분 코드는 생략

 

이런식으로 버튼을 넣으면

활성화 시 시스템 기본 색상이 들어가고 (파란색)

비 활성화 시 자동으로 회색 처리 된다.

버튼 비활성화 상태
버튼 활성화 상태

 

그런데 이렇게 파란 버튼은 

너무 애플스럽기(?) 때문에 다른 색상으로 바꿔주고 싶었다.

 

 

 

만만한 .foregroundStyle을 썼는데 (구 .foregroundColor)

Button(action: viewModel.sendMessage) {
    Image(systemName: "paperplane.fill")
        .font(.system(size: 26))
        .foregroundColor(.primary) // .black 등 원하는 색
}
.disabled(viewModel.inputText.trimmingCharacters(in: .whitespaces).isEmpty)

버튼 비활성화 상태

아예 색을 입혀버리는 거라서

비활성화 상태일 때도 그 색깔로 나온다.

 

 

이럴때는 .tint 를 쓰면 된다 (구 .accenctColor)

Button(action: viewModel.sendMessage) {
    Image(systemName: "paperplane.fill")
        .font(.system(size: 26))
        .tint(.primary) // .black 등 원하는 색
}
.disabled(viewModel.inputText.trimmingCharacters(in: .whitespaces).isEmpty)

버튼 비활성화 상태
버튼 활성화 상태

 

 

 

 

참고: https://stackoverflow.com/questions/56675897/changing-the-color-of-a-button-in-swiftui-based-on-disabled-or-not

댓글