【问题标题】:Removing image background in UIImageView at runtime在运行时删除 UIImageView 中的图像背景
【发布时间】:2009-06-13 22:46:30
【问题描述】:

我在 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版在运行时不显示白色背景和编程版有什么区别?

【问题讨论】:

    标签: iphone cocoa-touch interface-builder uiimageview uiimage


    【解决方案1】:

    确保除了将背景颜色设置为清除之外,还设置了self.ball.opaque = NO;。否则,仍然会绘制白色背景。我相信无论您使用 IB 还是 Xcode 来创建视图,您都必须设置这两个 - 但 IB 可能已经为您设置了这两个。

    【讨论】:

    • 感谢这两个建议。我的错。有一个具有透明背景的 JPG 的 PNG 版本。当我以编程方式使用 JPG 时,IB 使用的是 PNG。啊!但是,如果图像没有透明背景,那么您就无法以简单的方式对其进行处理。不透明不会改变它。我还尝试通过包含 Quartz 框架和 self.ball.layer.opacity = 0.0f 来设置不透明度;但又不行了。修改图片是最简单的路线。
    【解决方案2】:

    如果您需要以编程方式删除背景,您可以参考"Bitmap Images and Image Masks" 指南。在这一点上我没有其他想法......只是使用 CGImageCreateWithMaskingColors。

    如果您的 *.PNG(或任何图形资源文件)没有内置透明度(只有白色背景),但使用 IB 看起来像透明 - 可能是 alpha 属性小于1 为您的 UIImageView,您会看到部分透明的图像。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-29
      • 2011-03-09
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多