programing

목표 C UIC 색상 상수 정의

telecom 2023. 11. 1. 22:08
반응형

목표 C UIC 색상 상수 정의

제 테마에 맞는 사용자 정의 색상이 몇 가지 있는 아이폰 애플리케이션이 있습니다.이러한 색상은 제 UI에 맞게 고정되므로 포함할 클래스의 색상을 정의하고자 합니다(Constants.h 및 Constants.m).어떻게 해야 합니까? (UIC 색상은 가변적이며 오류를 발생시킬 수 있기 때문에 단순하게 정의하는 것은 작동하지 않습니다 - 이니셜라이저는 일정하지 않습니다.)

/* Constants.h */
extern UIColor *test;

/* Constants.m */
UIColor *test = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];

감사합니다!

UI 색상은 변경할 수 없습니다.저는 주로 컬러, 폰트, 이미지로 작업을 합니다.싱글턴을 사용하거나 정적 이니셜라이저를 사용하도록 쉽게 수정할 수 있습니다.

@interface UIColor (MyProject)

+(UIColor *) colorForSomePurpose;

@end

@implementation UIColor (MyProject)

+(UIColor *) colorForSomePurpose { return [UIColor colorWithRed:0.6 green:0.8 blue:1.0 alpha:1.0]; }

@end

단순화를 위해 이렇게 했습니다.

/* Constants.h */
#define myColor [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0]

통상적인 표현으로 사용할 수 있도록 ';'를 빼놓는 것을 잊지 마세요.

이 접근 방식에 기술적으로 문제가 있는 것은 아닌지 확신할 수 없지만, 잘 작동하며 컴파일 시간 상수 이니셜라이저 오류를 방지합니다. 이 코드는 'myColor'를 입력하는 모든 곳에 효과적으로 고정되므로 실제로 사용하기 전에는 컴파일되지 않습니다.

다른 옵션

당신의 .h에서 당신은 할 수 있습니다.

extern UIColor *  const COLOR_LIGHT_BLUE;

당신의 .mm에서 당신은 할 수 있습니다.

UIColor* const COLOR_LIGHT_BLUE = [[UIColor alloc] initWithRed:21.0f/255 green:180.0f/255  blue:1 alpha:1];//;#15B4FF

확장 기능이 없는 빠르고 더러운 것을 찾고 있다면 clang과 함께 사용하십시오.

#define kGreenColor colorWithRed:(0/255.0) green:(213/255.0) blue:(90/255.0) alpha:1.0

- (void)doSomething
{
   _label.textColor = [UIColor kGreenColor];

}

종종 사람들은 전역 상수를 단일 톤 객체에 넣거나, 미리 언급한 대로 일부 클래스의 클래스 메서드를 통해 액세스할 수 있습니다.

다른 방법은 다음과 같습니다.

머리글:

#if !defined(COLORS_EXTERN)
    #define COLORS_EXTERN extern
#endif

COLORS_EXTERN UIColor *aGlobalColor;

구현:

#define COLORS_EXTERN
#import "GlobalColors.h"


@interface GlobalColors : NSObject
@end

@implementation GlobalColors

+ (void)load
{
    aGlobalColor = [UIColor colorWithRed:0.2 green:0.3 blue:0.4 alpha:1];
}

@end

이것은 약간의 해킹이지만 구현에서 색상을 다시 정의할 필요는 없으며 메소드 호출 없이 색상에 액세스할 수 있습니다.

AppController를 사용하여 색상을 정적 변수가 아닌 전역적으로 액세스할 수 있도록 합니다.이렇게 하면 아키텍처의 관점에서 합리적이며, 실행 중에도 가상으로 색상 체계를 변경하고자 한다면 AppController에서 한 두 가지 방법에 불과할 것입니다.

언급URL : https://stackoverflow.com/questions/2824187/objective-c-defining-uicolor-constants

반응형