본문 바로가기

프로그래밍/iOS,macOS

커스텀객체와 인터페이스빌더

인터페이스 빌더에서 코드상의 클래스와 프로퍼티를 동적으로 연동


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