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 中