首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UIImage不透明的png文件

UIImage不透明的png文件
EN

Stack Overflow用户
提问于 2014-07-05 17:21:47
回答 2查看 1.7K关注 0票数 2

我有一个简单的png文件。该图像是一个带有蓝色边框和透明填充的矩形。

我将这个添加到我的UIButton,如下所示:

代码语言:javascript
运行
复制
[myButton setImage:[UIImage imageNamed:@"CustomisationsBorder.png"] forState:UIControlStateSelected];

为什么当我将它添加到我的UIButton中时,它的透明度没有保留?

我每页有几个按钮,我不想创建图像的正常状态和图像的选定状态。

EN

回答 2

Stack Overflow用户

发布于 2014-07-05 18:01:44

因为iOS7按钮将其图像呈现为用其tintColor着色遮罩。所有非完全透明的像素都将在颜色中渲染。因此,请确保你的内部填充是完全透明的,或者使用:

代码语言:javascript
运行
复制
[myButton setBackgroundImage:image forState:UIControlStateSelected]

或者确保渲染原始图像

代码语言:javascript
运行
复制
[[UIImage imageNamed:@"CustomisationsBorder.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
票数 0
EN

Stack Overflow用户

发布于 2014-07-06 13:08:34

我暂时采用了这个解决方案。这段代码可以在这里找到,也可以在某个随机的博客上找到。

代码语言:javascript
运行
复制
- (UIImage*)imageWithBorderFromImage:(UIImage*)source {
    CGSize size = [source size];
    UIGraphicsBeginImageContext(size);
    CGRect rect = CGRectMake(0, 0, size.width, size.height);
    [source drawInRect:rect blendMode:kCGBlendModeNormal alpha:1.0];

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetRGBStrokeColor(context, 0.0, 0.0, 1.0, 1.0);
    CGContextSetLineWidth(context, 5.0);
    CGContextStrokeRect(context, rect);
    UIImage *testImg =  UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return testImg;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24584897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档