在运行时删除 UIImageView 中的图像背景
我在 Interface Builder 中将一个球分配给了 UIImageView。 UIImageView 中的 IBOutlet 连接到相应的 UIViewController。 该图像具有白色背景。 当我将它分配给IB中的UIImageView时,背景是透明的。 在 IB 中,我将 UIImageView 设置为透明背景和宽高比填充。
当我在运行时为 UIImageView 分配图像时:
self.ball.image = ballImage; //ballImage is a UIImage
self.ball.backgroundColor = [UIColor clearColor];
self.ball.contentMode = UIViewContentModeScaleAspectFill;
UIImageView 正方形具有白色背景,其中球不显示。 意思是所有四个角。 IB 版本在运行时不显示白色背景和编程版本有什么区别?
I have a ball assigned to a UIImageView in Interface Builder. An IBOutlet from the UIImageView is wired to a corresponding UIViewController. The image has a white background. When I assign it to the UIImageView in IB, the background is transparent. In IB, I have the UIImageView set to a transparent background and aspect fill.
When I assign the UIImageView an image at runtime:
self.ball.image = ballImage; //ballImage is a UIImage
self.ball.backgroundColor = [UIColor clearColor];
self.ball.contentMode = UIViewContentModeScaleAspectFill;
the UIImageView square has a white background where the ball doesn't display. Meaning all four corners. What is the difference that the IB version doesn't show a white background at runtime and the programmatic version does?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
除了将背景颜色设置为透明之外,请确保设置
self.ball.opaque = NO;
。 否则,仍然会绘制白色背景。 我相信无论您使用 IB 还是 Xcode 创建视图,您都必须设置这两个选项 - 但 IB 可能已经为您设置了它们。Make sure you set
self.ball.opaque = NO;
in addition to setting the background color to clear. Otherwise, a white background will still be drawn. I believe you have to set both of these whether you use IB or Xcode to create the view - but IB may have set them both for you.如果您需要以编程方式删除背景,您可以参考 “位图图像和图像蒙版” 指南。 我在这一点上没有其他想法......只是使用 CGImageCreateWithMaskingColors 。
如果您的 *.PNG(或任何图形资源文件)没有内置透明度(只是白色背景),但使用 IB,它看起来像透明的 - 可能 alpha 属性小于 1 UIImageView 并且您看到部分透明的图像。
If you need to remove background programmatically you may refer to "Bitmap Images and Image Masks" guide. I have no other idea on this point...just using CGImageCreateWithMaskingColors.
In case your *.PNG (or any graphic resource file) doesn't have built-in transparency (just white background) but with IB it looks like transparent - may be alpha property less then 1 for your UIImageView and you see partially transparent image.