在iPhone上检索默认UI颜色

时间:2011-02-16 19:35:27

标签: iphone cocoa-touch uicolor

这是我的iPhone项目,其中包含一个带有常规UIButton的XIB文件。该按钮具有文本颜色 - 精确的蓝色,RGB(50,79,133)。

是否有快速正确的方法在运行时检索该颜色值?不是这个特定按钮的颜色,而是UIButtons的默认文本颜色?最好是UIColor *CGColorRef

iPhone上是否有系统颜色的概念,或者这只是界面生成器中预设强制执行的默认设置?

是的,我可以做一些基本数学并将RGB转换为UIColor使用的浮点(UGH!)表示。还有什么比这更优雅的呢?

2 个答案:

答案 0 :(得分:2)

对于UIColor问题,我建议在UIColor中添加一个类别,如下所示:

<强>的UIColor + Extras.h

#import <UIKit/UIKit.h>

@interface UIColor(Extras)
+ (UIColor *)colorWithRGBA:(NSUInteger) rgba;
+ (UIColor *)colorWithRGB:(NSUInteger) rgb;
@end

<强>的UIColor + Extras.m

#import "UIColor+Extras.h"

@implementation UIColor(Extras)
+ (UIColor *)colorWithRGBA:(NSUInteger) rgba
{
    return [UIColor colorWithRed:(rgba >> 24) / 255.0f green:(0xff & ( rgba >> 16)) / 255.0f blue:(0xff & ( rgba >> 8)) / 255.0f alpha:(0xff & rgba) / 255.0f];
}

+ (UIColor *)colorWithRGB:(NSUInteger) rgb
{
    return [UIColor colorWithRed:(rgb >> 16) / 255.0f green:(0xff & ( rgb >> 8)) / 255.0f blue:(0xff & rgb) / 255.0f alpha:1.0];
}
@end

这样您就可以撰写[UIColor colorWithRGBA:0xFF00FFFF][UIColor colorWithRGB:0xFF00FF]

等内容

作为起始颜色值,其中一些记录在头文件中,如UIButton.h,并且在UIColor上也有一些颜色可用作类方法,如[UIColor lightTextColor] [UIColor darkTextColor]等。记录在UIColor类引用中。

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIColor_Class/Reference/Reference.html

如果要检索默认颜色,请始终:

[[button titleLabel] textColor]

获取任何按钮的文本颜色。如果需要默认颜色,请创建隐藏按钮并检查其文本颜色。你不是很优雅。

答案 1 :(得分:2)

如果您想要默认按钮文字颜色,您只需要:

label.textColor = [button titleColorForState: UIControlStateNormal];

您可以通过指定不同的UIControlState来获取其他颜色。