gpt4 book ai didi

ios - 使用纯色创建多个 UIImage

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:17:10 26 4
gpt4 key购买 nike

一段时间以来,我一直在寻找一种以编程方式绘制图像的方法。我找到了一个相当不错的解决方案:

UIGraphicsBeginImageContextWithOptions(CGSizeMake(36, 36), NO, 0.0);
UIImage *blank = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

但这样做的缺点是,在同一上下文中,我无法创建两个或多个不同颜色的图像,因此我可以将它们用作按钮的背景(例如,对于所有三种状态)。是的,我知道我可以将一些资源 PNG 设置为 UIButton 的背景,但如果我愿意,我不会问这个问题。

我真的很想学习如何以编程方式创建图像并使用它们,以不同的颜色作为背景,在相同的上下文中,或者可能在另一个上下文中创建但移植到我需要它们的地方。

编辑:为了进一步澄清,采用这段代码:

UIButton *button = [UIButton alloc] init];

button.frame = CGRectMake(0.0, 0.0, 200, 30);

//this is pefect
button.backgroundColor = [UIColor whiteColor];

//but, what if I want to have the UIControlStateNormal / UIControlStateHighlighted / UIControlStateDisabled with different background colors ?
[button setBackgroundColor: [UIColor blackColor] forState: ?] // dont't think so, right ?

在上面的例子中,如果我想让按钮在按下或禁用时看起来不同,当然,背景,因为标题和标题颜色可以很容易地改变。

最佳答案

您可以在 UIImage 上创建一个类别以返回具有特定大小并填充颜色的新 UIImage 实例:

+ (UIImage *)imageOfSize:(CGSize)size filledWithColor:(UIColor *)color {
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect rect = (CGRect){CGPointZero, size};
CGContextFillRect(context, rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}

关于ios - 使用纯色创建多个 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20429086/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com