2011-02-16 62 views
3

这是我的iPhone项目,它带有一个带有常规UIButton的XIB文件。该按钮具有文本颜色 - 一个很好的蓝色,RGB(50,79,133)准确。在iPhone上检索默认的UI颜色

是否有一种快速而正确的方式在运行时检索该颜色值?不是这个特定按钮的颜色,而是UIButtons的默认文本颜色?优选地作为UIColor *CGColorRef

在iPhone上是否存在系统颜色的概念,或者这只是由Interface Builder中的预设强制实施的默认设置?

是的,我可以做一些初级数学,并将RGB转换为UIColor使用的浮点(UGH!)表示。比这更优雅吗?

回答

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] 

要得到任何按钮的文本颜色。如果您需要默认颜色,请创建一个隐藏按钮并检查它的文本颜色。不是很优雅的介意你。

+0

@Nuoji:我之后没有记录在UIButton.h或UIColor中。所以答案是 - 没有这样的东西,使用算术。 – 2011-02-16 20:17:07

+0

是的,在玩Cocoa时,有很多实用功能/类别的堆积空间。我怀疑0-1.0浮点颜色是受OpenGL和类似的启发。 – Nuoji 2011-02-16 22:29:18

2

如果你想默认按钮文本颜色,所有你需要做的是:

label.textColor = [button titleColorForState: UIControlStateNormal]; 

您可以通过指定不同的UIControlState得到其他颜色。