绘图背景颜色和边框与背景 PNG



我希望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;
}

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

最新更新