광어네 맛집
[Objective C]UIButton BackgroundColor 본문
[Objective C]UIButton BackgroundColor
Lautner Jacob 2022. 4. 21. 12:47요즘 날씨가 오락가락하는데 옷 입기가 애매함
아무튼 요즘은 출시 앱하나 만들까 하는데 Swift로 해야하나 SwiftUI로 해야하나 고민이긴 함 ㅜ
아무튼 이번 포스팅은 UIButton BackgroundColor에 대해서 적어볼까 함!
상황은 UIButton을 CustomButton으로 만들꺼임
참고로 Designable 써서 스토리보드에 보이게 만들거임
먼저 헤더 파일에 아래처럼 선언합니다
#import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface Button: UIButton
@property (nonatomic, strong) IBInspectable UIColor *enableBackgroundColor;
@property (nonatomic, strong) IBInspectable UIColor *enableTintColor;
@end
이후 메인 파일에서는 아래처럼 해줌!
Extension 에는 이렇게 선언해주는데 이유는 조금이따가 말해줌!
@interface Button ()
@property (nonatomic, strong) UIColor *normalBackgroundColor;
@property (nonatomic, strong) UIColor *normalTextColor;
@end
Awakefromnib 을 선언해서
구현하고 싶은 메소드를 넣어주면 됩니다!
( 상황에 맞게 draw rect 등등 넣어주시면 됨!)
대충 이런 느낌으로 넣어주면 됨!
아래 코드는 왜 넣어주냐면 스토리 보드에서 기본으로 설정해주는 부분 있잖음
그게 self.background로 들어가나 봄;;;
그것도 모르고 헤더에서 backgroundColor라고 이름 지었다가 얘가 알아듣지 못함...에러라도 떠주지
self.normalTextColor = self.titleLabel.textColor;
self.normalBackgroundColor = self.backgroundColor;
그리고 신기한게 헤더에 선언한 프로퍼티를 함수로 쓰려고 보니까
'set' 붙이니까 자동완성됨 ㅋㅋㅋㅋㅋㅋ
Obejctive C도 조금 편하게 자동완성되구나?
- (void)setEnableBackgroundColor:(UIColor *)enableBackgroundColor {
_enableBackgroundColor = enableBackgroundColor;
[self setNeedDisplay];
}
- (void)setEnableTextColor:(UIColor *)enableTextColor {
_enableTextColor = enableTextColor;
[self setNeedDisplay];
}
위에 처럼 스토리보드에서 받은 값을 저장해두는 거임
그럼 받기만 하면 어째 받은 걸 상태에 따라서 바꿔야함
이것도 마찬가지로 'set'쓰면 enable 나와서 적을 수 있음!
(정확히 기억이 안나는데 아래처럼 true, false 나눠서 적어주면 됩니다!)
( 물론 옆에 파라메터가 있음 / 지금 기억 더듬어서 적는거라 ㅎㅎ..)
- (void) setEnable {
if (true) {
[self setBackgroundColor: self.normalBackgroundColor];
// textColor도 마찬가지!
} else {
[self setBackgroundColor: _enableBackgroundColor];
// textColor도 마찬가지!
}
}
그럼 Custom은 다 만든거임!!
사용할 때는 어떻게 하냐면 스토리 보드에서 보면 이렇게 나올 거임!!
스토리보드에서 ViewController에 연결하고!
@property (weak, nonatomic) IBOutlet Button *myButton;
addTarget 설정해주면 됨!
상황에 맞게 쓰면 되지만
아래는 인스타 '좋아요' 버튼 처럼 쓸 수 있음!
- (void)clickedAction:(Button *)sender {
_myButton.enabled = sender.selected;
sender.selected = !sender.selected;
}
sender.selected가 프린트해보면 0 , 1 반복되는 걸 알 수 있음!
적다보니 길어졌는데 다음에는
self 랑 _ (언더바)차이에 대해서 적어야겠음 ㅋㅋㅋㅋ
아 맞다
이 오류도 발견하긴 했는데 아래처럼 바꿔주면 없어짐!
근데 BuildSetting에서 설정해주면 오류 안나오긴
하지만 self 쓰는게 strong에서 weak로 바꿔주는 거 같음! (이건 부정확하지만 ㅜ)
_backgroundColor
self -> _backgroundColor
아무튼 오늘도 화이팅!!
'Objective-C [레거시 뿌수기!] > Objective-C' 카테고리의 다른 글
[Objective-C] Dictionary 다루기 (0) | 2022.04.25 |
---|---|
[Objective C] self & _ 비교 (0) | 2022.04.22 |
[Objective - C] #define 이란? (0) | 2022.04.11 |
[objective - C] 반복문 (0) | 2022.04.07 |
[Objective - C] AddTarget swift와 차이점 (0) | 2022.04.05 |