我想为iPad应用程序的大多数按钮使用特定的RGB十六进制颜色。
我所做的是:
我在我的项目中实现了UIButton
子类,它模拟了所需的背景颜色,文本颜色和按钮的边框 - 然后我在我需要UIButton
的项目中随处使用它。
我的UI / UX设计师不提供PNG,而是坚持我模仿与Hex代码相同的彩色网站按钮。我更像是PNG的粉丝。
现在,您可能想知道这个问题与编程的关系是,我正在访问.layer.borderWidth
& Subclass中的.layer.borderColor
属性最终会在任何地方使用。
那么,这种方法对应用程序有什么好处而不是使用背景PNG吗?
注意 (如果相关):所有按钮大小相同。
答案 0 :(得分:1)
你可以自己制作颜色的UIImage并设置你的按钮图像:
+ (UIImage *)imageFromColor:(UIColor *)color {
CGRect rect = CGRectMake(0, 0, 1, 1);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
答案 1 :(得分:0)
这可能会对你有帮助。
- (unsigned int)intFromHexString:(NSString *)hexStr
{
@try {
unsigned int hexInt = 0;
NSScanner *scanner = [NSScanner scannerWithString:hexStr];
[scanner setCharactersToBeSkipped:[NSCharacterSet characterSetWithCharactersInString:@"#"]];
[scanner scanHexInt:&hexInt];
return hexInt;
}
@catch (NSException *exception) {
}
}
- (UIColor *)getUIColorObjectFromHexString:(NSString *)hexStr alpha:(CGFloat)alpha
{
unsigned int hexint = [self intFromHexString:hexStr];
UIColor *color =
[UIColor colorWithRed:((CGFloat) ((hexint & 0xFF0000) >> 16))/255
green:((CGFloat) ((hexint & 0xFF00) >> 8))/255
blue:((CGFloat) (hexint & 0xFF))/255
alpha:alpha];
return color;
}
此功能将为您提供可在按钮中设置的十六进制字符串的颜色