这是我的iPhone项目,其中包含一个带有常规UIButton的XIB文件。该按钮具有文本颜色 - 精确的蓝色,RGB(50,79,133)。
是否有快速正确的方法在运行时检索该颜色值?不是这个特定按钮的颜色,而是UIButtons的默认文本颜色?最好是UIColor *
或CGColorRef
。
iPhone上是否有系统颜色的概念,或者这只是界面生成器中预设强制执行的默认设置?
是的,我可以做一些基本数学并将RGB转换为UIColor使用的浮点(UGH!)表示。还有什么比这更优雅的呢?
答案 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类引用中。
如果要检索默认颜色,请始终:
[[button titleLabel] textColor]
获取任何按钮的文本颜色。如果需要默认颜色,请创建隐藏按钮并检查其文本颜色。你不是很优雅。
答案 1 :(得分:2)
如果您想要默认按钮文字颜色,您只需要:
label.textColor = [button titleColorForState: UIControlStateNormal];
您可以通过指定不同的UIControlState来获取其他颜色。