UIImage不透明的png文件

时间:2014-07-05 09:21:47

标签: ios objective-c uibutton uiimage transparency

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

我将此添加到我的UIButton中,如下所示:

[myButton setImage:[UIImage imageNamed:@"CustomisationsBorder.png"] forState:UIControlStateSelected];

为什么在将其添加到我的UIButton时不保持透明度?

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

2 个答案:

答案 0 :(得分:0)

由于iOS7按钮将其图像渲染为蒙版,因此使用tintColor进行着色。所有非完全透明的像素都将在Color中呈现。因此,请确保您的内部填充完全透明或使用:

[myButton setBackgroundImage:image forState:UIControlStateSelected]

或确保呈现原始图像

[[UIImage imageNamed:@"CustomisationsBorder.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]

答案 1 :(得分:0)

我现在用这个解决方案。这段代码可以在这里和随机博客上找到。

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