我希望iPad应用程序的大多数按钮都有特定的RGB十六进制颜色。
我所做的是:我在我的项目中实现了UIButton
子类,它模拟了所需的背景颜色、文本颜色和颜色;按钮的边界-然后我在我的项目中需要UIButton
的任何地方都使用它。
我的用户界面/用户体验设计师不提供PNG,相反,他坚持让我模仿网站按钮的颜色与十六进制代码相同。我更喜欢背景PNG。
现在,这个问题和编程的关系,正如你们可能想知道的那样,我正在访问.layer.borderWidth
&子类中的.layer.borderColor
属性,该属性最终在所有地方都被使用。
那么,这种方法对应用程序而不是使用背景PNG有好处吗?
注意 (如果相关):所有按钮的大小相同。
您可以自己根据颜色制作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;
}
您还需要将HEX RGB颜色代码转换为UIColor
这可能会对您有所帮助。
- (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;
}
此函数将为您提供十六进制字符串的颜色,您可以在按钮中设置该字符串