인터페이스 빌더에서 코드상의 클래스와 프로퍼티를 동적으로 연동
IBDesignable
해당 객체를 인터페이스빌터를 통해 표현하겠다는 지시어
IBInspectable
이름그래도 해당 속성(멤버 인스턴스)을 인터페이스뷰를 통해 제어 가능토록 해준다.
IBInspectable
.h
@interface MyView : UIView
{
IBInspectable UIColor *bgColor;
}
@end
.m
IB_DESIGNABLE
@interface MyView : UIView
// setter, getter 관련 코드
-(void)setBgColor:(UIColor *)color {
// setter를 재정의 해 변경이 일어나면 처리할 작업을 추가한다
// 원래 setter가 할일 -_-;;
bgColor = color;
// 다른 무언가
[self setBackgroundColor:bgColor];
}
-(UIColor)bgColor
{
return biColor;
}
// 실행 시점에 해당 데이터를 처리
-(void)awakeFromNib
{
[self setBackgroundColor:bgColor];
}
@end
swift
@IBDesignable
class MyView : UIView {
@IBInspectable var bgColor : UIColor = UIColor.blackColor()
{
didSet
{
// IB에서 값이 변경되면 처리할 내용
}
}
override func awakeFromNib() {
}
}
IBDesignable 관련 메쏘드
initWithCoder : 인터페이스 빌드로부터 호출되는 초기화
초기화와 바인딩 등이 완료되면 호출됨.
-(void)awakeFromNib
{
}
IB_DESIGNABLE 오브젝트가 변경될때 호출된다.
-(void)prepareForInterfaceBuilder {
}
인터페이스 빌더에서만 동작하기를 원하는 경우
#if !TARGET_INTERFACE_BUILDER
// app
#else
// interface builder
#endif
확장(카테고리)
기존 오브젝트도 category/extention으로 추가 속성을 지정할 수 있다.
@interface UIView(MyCategory)
@property IBInspectable
@end
@implement UIView(MyCategory)
@end
swift
extention UIView {
@IBInspectable var cornerRadius:CGFloat {
}
}
'프로그래밍 > iOS,macOS' 카테고리의 다른 글
이것저것 Objective-C 관련 노트~ (0) | 2016.11.01 |
---|---|
아이폰 시뮬레이터 로그 터미널로 보기 (0) | 2016.11.01 |
모달 뷰 (0) | 2016.10.28 |
ChildViewController (0) | 2016.10.27 |
오토레이아웃 이것저것 / Constraint / UITextView (0) | 2016.10.25 |
스토리보드 / XIB (0) | 2016.10.22 |
싱글톤 (0) | 2016.10.19 |
코어 데이터 정리 (0) | 2016.10.18 |
슬라이드메뉴 (0) | 2016.10.16 |
UITableView / UICollectionView (0) | 2016.10.16 |