我有一个简单的png文件。该图像是一个带有蓝色边框和透明填充的矩形。
我将这个添加到我的UIButton,如下所示:
[myButton setImage:[UIImage imageNamed:@"CustomisationsBorder.png"] forState:UIControlStateSelected];
为什么当我将它添加到我的UIButton中时,它的透明度没有保留?
我每页有几个按钮,我不想创建图像的正常状态和图像的选定状态。
发布于 2014-07-05 18:01:44
因为iOS7按钮将其图像呈现为用其tintColor着色遮罩。所有非完全透明的像素都将在颜色中渲染。因此,请确保你的内部填充是完全透明的,或者使用:
[myButton setBackgroundImage:image forState:UIControlStateSelected]
或者确保渲染原始图像
[[UIImage imageNamed:@"CustomisationsBorder.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
发布于 2014-07-06 13:08:34
我暂时采用了这个解决方案。这段代码可以在这里找到,也可以在某个随机的博客上找到。
- (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;
}
https://stackoverflow.com/questions/24584897
复制相似问题