Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 스위프트 테이블 뷰 셀
- swift 문자
- 푸시 데이터 저장
- swift sms
- 스위프트
- flutter 회전
- native flutter view
- Swift flutterview
- 안드로이드 에러
- flutter rotate
- NotificationService Extension
- 스위프트 카메라
- 플러터 뷰 컨트롤러
- 스위프트 푸시
- 스위프트 웹뷰
- 안드로이드 바로가기
- FlutterView MethodChannel
- 스위프트 UserDefaults
- 스위프트 앨범
- 안드로이드 앨범
- 노티피케이션 익스텐션
- Swift flutterviewcontroller
- 안드로이드 FCM
- Flutter NativeView
- 앱 백그라운드 푸시 데이터 저장
- Flutter UIKitView MethodChannel
- 안드로이드 숏컷
- swift autolayout
- silent push
- 앱 꺼졌을 때 푸시 데이터 저장
Archives
- Today
- Total
Things take time
[Swift] UIButton Highlight 및 Selected Background Color 변경 본문
[UIButton Background Color]
UIButton의 기본 이미지를 상태값에 따라 변경하는게 가장 깔끔하지만, 만약 이미지를 넘겨받지 않고 색상으로 직접 만들라는 오더가 내려왔을 때, 버튼의 배경색상을 코드로 변경하고, 실행하게 되면 내가 원한 색상이 아니라, 좀 더 탁한 색이 나오게 된다 .
예를 들어, Stack OverFlow에서 사용하는 배경색상 변경 함수를 보면
func setBackgroundColor(color: UIColor) {
self.btn.clipsToBounds = true // add this to maintain corner radius
UIGraphicsBeginImageContext(CGSize(width: 1, height: 1))
if let context = UIGraphicsGetCurrentContext() {
context.setFillColor(color.cgColor)
context.fill(CGRect(x: 0, y: 0, width: 1, height: 1))
let colorImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.btn.setBackgroundImage(colorImage, for: .highlighted)
}
}
위와 같은 함수로 변경할 수 있다. 사용자가 버튼을 클릭하는 그 순간의 상태값인 highlighted의 컬러를 넘겨받은 컬러로 변경하는 것인데, 여기서 나느 UIColor.yellow로 했을 경우 아래와 같다.
클릭이란 버튼의 노란색이 옅어졌다.
내가원한건 선명한 노란색이었기에, 아래와 같이 원한다.
이 때 사용할 코드가 UIButton을 상속받는 클래스를 하나 생성하여, isHighlighted라는 변수를 오버라이드 하여 사용하면 된다.
class ButtonWithHighlight: UIButton {
override var isHighlighted: Bool {
get {
return super.isHighlighted
}
set {
backgroundColor = UIColor.yellow
super.isHighlighted = newValue
}
}
}
그리고 UIButton을 연결한 스토리보드 및 클래스 Outlet에서 UIButton대신 ButtonWithHighlight로 상속받게 하면 된다.
'iOS (기능)' 카테고리의 다른 글
[SWIFT] 위젯의 상대적인 현재 위치 파악하기 (0) | 2020.09.29 |
---|---|
[SWIFT] Autolayout 사용하기 - 가로/세로 변경 및 하위뷰 변경 (0) | 2020.09.25 |
[SWIFT] 투명도가 있는 뷰 하위에 추가 되는 뷰에서 투명도 영향 받지 않기 (1) | 2020.02.25 |
[SWIFT] TextView에 링크 걸기 및 뷰 컨트롤러 이동 (0) | 2020.01.16 |
[iOS] Android의 R.array와 같은 배열 문자열 처리 (0) | 2019.12.17 |