User Defined Runtime Attributes란?
Xcode의 Interface Builder에서 특정한 UI 객체에 사용자가 정의하는 값을 바로 입력하는 기능을 말합니다.Storyboard에 정의된 객체에서 값을 설정할 수 있는 것으로, Identity Inspector tab에서 설정할 수 있습니다.
InterfaceBuilder의 User Defined Runtime Attributes 설정 화면과 시뮬레이터 표시 내용. |
위의 그림처럼 Interface Builder에서 UIView를 넣고, Identity Inspector Tab에서 값을 입력하게 되면, m파일에서 UIView의 객체를 연결해서, 직접 입력한 것처럼 동작하게 됩니다.
입력 할 수 있는 값은 어떤 것이 있을까요?
Boolean - BOOLNumber - NSNumber *
String - NSString *
Point - CGPoint
Size - CGSize
Rect - CGRect
Range - NSRange
Color - UIColor *
LocalizedString - NSString *
(Localizable.string 파일에서 Key를 입력하고, 해당 locale에 맞는 string을 입력)
Image - UIImage*
Xcode 6에서는 총 10가지를 입력할 수 있습니다.
위에 첫번째 이미지에서 layer.borderColor는 바로 설정할 수가 없습니다.
전달되는 객채는 UIColor이고, layer.borderColor는 CGColorRef를 사용하기 때문입니다.
가능한 방법은
CALayer의 카테고리를 생성하고, 그 카테고리에 setBorderColorFromUIColor 함수를 만들어 줍니다.
source code
#import "CALayer+extension.h" @implementation CALayer (extension) - (void)setBorderColorFromUIColor:(UIColor *)color { self.borderColor = color.CGColor; } @end
h파일에도 함수를 선언해 주어야 합니다.
이제, InterfaceBuilder에서 layer.borderColorFromUIColor 를 사용해서, 색상을 설정할 수 있습니다.
위의 시뮬레이터에서 테두리 색상이 설정된 것을 볼 수 있습니다.
[참고]
- iOS-Blog : User Defined Runtime Attributes- ATOMIC SPIN : Expanding User-Defined Runtime Attributes in Xcode with Objective-C
댓글 없음:
댓글 쓰기