인터페이스 빌더에서 상수를 사용하는 방법이 있는지 궁금해합니다. 예를 들어 다른 장소에서 수동으로 같은 색상을 설정하는 것을 피하기 위해 (때로는 매우 지루한 작업 일 수 있습니다 ...)Interface Builder와 코드간에 상수를 공유하는 방법은 무엇입니까?
현재 코드에서 색상을 사용하고 #define을 사용하여 색상을 설정하지만 분명히 IB는 #define을 사용할 수 없습니다.
인터페이스 빌더에서 상수를 사용하는 방법이 있는지 궁금해합니다. 예를 들어 다른 장소에서 수동으로 같은 색상을 설정하는 것을 피하기 위해 (때로는 매우 지루한 작업 일 수 있습니다 ...)Interface Builder와 코드간에 상수를 공유하는 방법은 무엇입니까?
현재 코드에서 색상을 사용하고 #define을 사용하여 색상을 설정하지만 분명히 IB는 #define을 사용할 수 없습니다.
나는이 작업을 수행하는 가장 쉬운 방법은 UIColor 클래스에 범주를 만들고 그것에 대한 클래스 메소드.
@interface UIColor (CustomColors)
+ (UIColor *)myCustomColor;
@end
찾는 구현 파일이 (예 UIColor + CustomColors.m)
@implementation UIColor (CustomColors)
+ (UIColor *)myCustomColor
{
return [UIColor colorWithRed:0.2 green:0.5 blue:0.2 alpha:1.0];
}
@end
: 헤더 파일 (예 UIColor + CustomColors.h)에
찾는이 예를 들어 그런 다음 코드의 어디에서나 클래스 메서드에 액세스 할 수 있습니다.
...
self.view.backgroundColor = [UIColor myCustomColor];
...
자세한 내용은을 참조하십시오.
또는 시스템 색상 표를 통해 색상 견본을 저장할 수 있습니다. 이렇게하려면 단순히 시스템 색상 표를 불러 와서 색상을 선택하고 색상 표에 끌어 놓습니다.
이 색상은 작성한 모든 Interface Builder 문서에서 사용할 수 있지만 시스템 색상 표를 사용하는 모든 응용 프로그램에서 사용할 수 있습니다.
color palette http://img.skitch.com/20091030-dhh3tnfw5d8hkynyr7e5q3amwg.png
나는 응용 프로그램 전반에 걸쳐 같은 스타일을 보장하기 위해 다양한 컨트롤을 서브 클래스에 의해이 문제를 해결 일했다. 단점은 인터페이스 빌더의 스타일을 와이어 프레임으로 만 볼 수 없다는 것입니다. 당신이 대답을
예를 들어 나는
@interface MyButton : UIButton
@end
@implementation MyButton
-(void) initialize{
self.backgroundColor = [UIColor MyButonColor]; // Using a category on UIColor
}
- (id)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) {
[self initialize];
}
return self;
}
- (id)initWithCoder:(NSCoder *)decoder {
if (self = [super initWithCoder:decoder]) {
[self initialize];
}
return self;
}
감사합니다. 사실, 나는 코드에서가 아니라 IB에서 색상을 설정하고자했을 것입니다. 즉, self.backgroundColor = myColor를 피하려고합니다. 그러나 만약 당신이 그것을 언급하면서 컬러 팔레트의 커스텀 컬러를 사용한다면, 예를 들어 내 컬러의 푸른 색 백분율을 미래에 수정하고 싶다면, IB에서 수동으로 변경을 수동으로해야 할 것입니다. 사용됩니다 ... 저는 #define 솔루션을 잠시 동안 지키고 있습니다, 그것은 지루한 리팩토링 시간을 절약 해줍니다 .... – Unfalkster