UIView 背景图片不显示

Posted

技术标签:

【中文标题】UIView 背景图片不显示【英文标题】:UIView Background Image not showing 【发布时间】: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”。这是否不适用于资产目录名称(自动处理两种图像大小)? 图片是否适用于您的项目? 应该是,因为它在资产目录中,其内容在编译时会自动包含,不是吗?不然怎么知道? 【参考方案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

【讨论】:

以上是关于UIView 背景图片不显示的主要内容,如果未能解决你的问题,请参考以下文章

UIView 未以编程方式显示在 UIScrollView 中

iOS开发UIView的动画与嵌入的UIButton的问题

复制粘贴到word里的图片为啥不显示?

iOS - UIView 不显示在 UIStackView 内

背景图片中UIView和UITableView不一致

Word中图片不显示怎么办