UIViewController背景图片

13

我该如何设置我的UIViewController的背景图片?有什么代码可以实现吗?目前我有以下代码:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"image.jpg"]];

但我不想使用图案。我希望它可以正确地填满屏幕。

5个回答

34

你可以使用:

UIImageView *backgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Blah.png"]];

[self.view addSubview:backgroundImage];
[self.view sendSubviewToBack:backgroundImage];
[backgroundImage release];

苹果高清图像指南


1
根据苹果公司的网站,iPhone 4 的分辨率为960x640像素,326 ppi。当我制作这么大的图片时,使用该代码将其放在手机上作为背景时,它太大了。我该如何让它适应屏幕大小?我正在尝试为我的一个应用程序制作高分辨率的背景。 - CodeGuy
您是什么意思说“点到像素”的转换?您能帮我找一些相关指南吗? - CodeGuy
我在我的回答中添加了一个链接,指向苹果关于支持高清图片的指南。 - Jesse Naugher
1
这段代码会导致内存泄漏。你需要在此代码的最后一行添加[backgroundImage release]; - fulvio
代码的最后一行解决了我的问题。谢谢!:D - Robert J. Clegg
显示剩余2条评论

7

代码翻译:

self.view.layer.contents = (id)[UIImage imageNamed:@"background.png"].CGImage;

解释原因:每个视图都由 CALayer 类支持。根据 CALayer 文档:

contents
提供层内容的对象。可动画化。


@property(retain) id contents

Discussion
一个层可以将此属性设置为 CGImageRef,以显示图像作为其内容。默认值为 nil。

而且,这个属性是可动画的。这意味着可以在这个层上使用基于 CoreAnimation 的漂亮转换。 注意:如果支持多种方向,请小心。


4

这个问题有一个快速的解决方案...

let backgroundImageView = UIImageView(image: UIImage(named: "backgroundImage"))
backgroundImageView.frame = view.frame
backgroundImageView.contentMode = .ScaleAspectFill
view.addSubview(backgroundImageView)
view.sendSubviewToBack(backgroundImageView)

2

Swift 3.0 的解决方案

self.view.backgroundColor = UIColor(patternImage: UIImage(named: "home02.png")!)

1
扩展Jesse Naugher的代码:UIView(或UIViewController),没有内置的方法来使用图像作为背景。您需要做的是使用UIImageView,它是一个专门用于显示图像的UIView子类,并将其添加到视图层次结构的后面。

谢谢。我明白了。您对我在Jesse Naugher的代码评论中提出的问题有什么建议吗? - CodeGuy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接