绘制背景颜色;边框和背景PNG

时间:2015-02-20 06:49:50

标签: ios objective-c performance user-interface uibutton

我想为iPad应用程序的大多数按钮使用特定的RGB十六进制颜色。

我所做的是: 我在我的项目中实现了UIButton子类,它模拟了所需的背景颜色,文本颜色和按钮的边框 - 然后我在我需要UIButton的项目中随处使用它。

我的UI / UX设计师不提供PNG,而是坚持我模仿与Hex代码相同的彩色网站按钮。我更像是PNG的粉丝。

现在,您可能想知道这个问题与编程的关系是,我正在访问.layer.borderWidth& Subclass中的.layer.borderColor属性最终会在任何地方使用。

那么,这种方法对应用程序有什么好处而不是使用背景PNG吗?

注意 (如果相关):所有按钮大小相同。

2 个答案:

答案 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;
}

您还需要convert HEX RGB color codes to UIColor

答案 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;
}

此功能将为您提供可在按钮中设置的十六进制字符串的颜色