【问题标题】:UIView Background Image not showingUIView 背景图片不显示
【发布时间】:2014-08-20 08:30:57
【问题描述】:

我在 Xcode Images.xcassets 中定义了一个背景图像,并希望将其用作视图的背景,但背景保持黑色。我正在使用:

override func viewDidLoad()
{
    super.viewDidLoad();
    view.backgroundColor = UIColor(patternImage: UIImage(named: "background_ipad"));
}

这应该可以根据 SO 上的其他一些票证工作,但由于某种原因,背景保持黑色,不显示图像。任何想法为什么会发生这种情况?

【问题讨论】:

  • 您的目标图像名为“background_ipad”?尝试 NSLogging 值 UIColor(patternImage: UIImage(named: "background_ipad"));
  • 图像为零。该名称在资产目录中定义为“background_ipad”。这是否不适用于资产目录名称(自动处理两种图像大小)?
  • 图片是否适用于您的项目?
  • 应该是,因为它在资产目录中,其内容在编译时会自动包含,不是吗?不然怎么知道?

标签: ios cocoa-touch uiview swift


【解决方案1】:

使用此代码:

SWIFT

view.layer.contents = UIImage(named:"Image_Name").CGImage

Objective-C

view.layer.contents = (__bridge id _Nullable)([UIImage imageNamed:@"Image_Name"].CGImage);

【讨论】:

  • 不过有一个问题:是否可以防止图像拉伸?我正在使用启动图像,当它从启动屏幕切换到应用程序的实际就绪状态时,我看到图像拉伸时出现明显的故障。
  • @Avalon :视图大小和图像大小应该相同。否则,如果图像尺寸较小且视图尺寸较大,它将拉伸。最好始终拥有精确尺寸的图像。
  • 我正在使用资产目录中的 LaunchImage,它具有适用于每个尺寸和设备方向的图像版本,但似乎在将其用作 view.layer.contents 时,它不会根据视图进行更新大小/方向。相反,它似乎只重复使用其中一张图像。
  • 您将在那里提供图像名称。所以这将是一个使用的特定图像。它不会更新。你将不得不处理它。
【解决方案2】:

点击目录图片

并确保目标会员资格

【讨论】:

  • 好的,谢谢!这意味着我的图像应该可用,因为检查了构建目标。所以这不是问题。还有什么问题?
  • 而不是将其添加到目录中,而是将图像添加到项目本身。并确保您使用正确的名称“background_ipad”
【解决方案3】:

对于目标 C

self.view.layer.contents = (__bridge id _Nullable)([UIImage imageNamed:@"Image_Name"].CGImage);

对于斯威夫特

self.view.layer.contents = UIImage(named:"Image_Name")!.CGImage

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    相关资源
    最近更新 更多