我有一个简单的png文件。图像是带有蓝色边框和透明填充的矩形图像。
我将此添加到我的UIButton中,如下所示:
[myButton setImage:[UIImage imageNamed:@"CustomisationsBorder.png"] forState:UIControlStateSelected];
为什么在将其添加到我的UIButton时不保持透明度?
我每页有几个按钮,我不想创建图像的正常状态和图像的选定状态..
答案 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;
}