Ios 绘图背景颜色&;边界与背景PNG

Ios 绘图背景颜色&;边界与背景PNG,ios,objective-c,performance,user-interface,uibutton,Ios,Objective C,Performance,User Interface,Uibutton,我想为我的iPad应用程序的大多数按钮使用特定的RGB十六进制颜色 我所做的是: 我在我的项目中实现了UIButton子类,它模拟了按钮所需的背景色、文本色和边框,然后我在项目中需要UIButton的任何地方都使用它 我的UI/UX设计师不提供PNG,相反,他坚持要求我用十六进制代码模仿网站按钮的相同颜色。我更多的是一个背景PNGs球迷 现在,这个问题和编程的关系,正如你们可能想知道的,我正在访问子类中的.layer.borderWidth&.layer.borderColor属性,这个属性最终

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

我所做的是: 我在我的项目中实现了
UIButton
子类,它模拟了按钮所需的背景色、文本色和边框,然后我在项目中需要
UIButton
的任何地方都使用它

我的UI/UX设计师不提供PNG,相反,他坚持要求我用十六进制代码模仿网站按钮的相同颜色。我更多的是一个背景PNGs球迷

现在,这个问题和编程的关系,正如你们可能想知道的,我正在访问子类中的
.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;
}
您还需要

这可能会对您有所帮助

- (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;
}

此函数将根据十六进制字符串为您提供颜色,您可以在按钮中设置该字符串

谢谢您的回答,但是我想知道它将给应用程序带来的开销(内存方面)。我的意思是,我可以直接使用RGB来模拟颜色,或者从颜色创建图像。但是,问题是这样做明智吗?或者应该使用背景PNG(通过将图像添加到资源文件夹中)。很难说有什么更好。我认为如果你没有太多的颜色,你应该使用PNGs:)是的,它只是一种单一的颜色,我正在寻找它不好的原因。:)