15

我尝试在我的应用程序委托中使用此代码,以便将 PNG 图像添加为视图控制器的背景:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[self window] setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];

    return YES;
}

但我没有运气......视图控制器仍然有白色背景。那个代码有什么问题?

4

9 回答 9

37

接受的答案和迈克尔的答案将起作用,但是,正确的方法是改用 UIImageView 。它可以根据设备上的不同屏幕尺寸更好地控制调整大小、缩放等。这是示例;

首先创建一个 UIImage。

UIImage *backgroundImage = [UIImage imageNamed:@"iphone_skyline3.jpg"];

其次创建一个 UIImageView。将帧大小设置为父(自己)的帧大小。这很重要,因为不同设备的帧大小会有所不同。根据图像大小,会发生拉伸。接下来将图像分配给视图。

UIImageView *backgroundImageView=[[UIImageView alloc]initWithFrame:self.view.frame];
backgroundImageView.image=backgroundImage;

最后,要将图像保留在所有控件后面,请执行以下操作。如果您将图像设置为应用程序的背景,这一点很重要。

[self.view insertSubview:backgroundImageView atIndex:0];
于 2014-03-04T12:31:32.973 回答
24

您需要为 ViewController 的视图设置背景

在您的 ViewControllerinitviewDidLoad

[self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];
于 2013-09-10T13:24:59.780 回答
7

这是它的快速方式:

override func viewDidLoad() {
    super.viewDidLoad()
    self.view.backgroundColor = UIColor(patternImage: UIImage(named: "background.png"))
}
于 2014-12-25T21:10:53.810 回答
7

@hadaytullah 答案的 Swift 4 版本,在图像调整方面做了一些改进:

override func viewDidLoad() {
    super.viewDidLoad()

    let backgroundImage = UIImage.init(named: "yourImageNameHere")
    let backgroundImageView = UIImageView.init(frame: self.view.frame)

    backgroundImageView.image = backgroundImage
    backgroundImageView.contentMode = .scaleAspectFill
    backgroundImageView.alpha = 0.1

    self.view.insertSubview(backgroundImageView, at: 0)
}
于 2018-02-08T09:51:53.533 回答
2

您还可以为 UIViewController 编写扩展以在多个地方使用

extension UIViewController {
    func setBackgroundImage(imageName: String) {
        let backgroundImage = UIImage(named: imageName)
        let backgroundImageView = UIImageView(frame: self.view.frame)
        backgroundImageView.image = backgroundImage
        self.view.insertSubview(backgroundImageView, at: 0)
    }
}
于 2019-02-26T20:01:37.220 回答
1

在 viewDidLoad 中,我使用:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImageString.png"]];

或者,如果您想在 appDelegate 中执行此操作,我认为可以

[self.window setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImageString.png"]]];

然后在 viewDidLoad 中将背景设置为 [UIColor clearColor] ?

于 2013-09-10T13:24:20.370 回答
1

如果您的视图控制器具有 tableView/collection 视图,则以下代码将适合您。

 - (void)viewDidLoad
{
   [super viewDidLoad];

   self.tableView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourImage.png"]];
}
于 2014-07-30T17:24:51.143 回答
1

您可以考虑我在 swift 3.0 中使用并在 xcode 8 中测试的以下解决方案

    // init and image with your pattern image
    var bgUIImage : UIImage = UIImage(named: "yourIamgeName")!
    let myInsets : UIEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0)
    bgUIImage = bgUIImage.resizableImage(withCapInsets: myInsets)
    self.view.backgroundColor = UIColor.init(patternImage:bgUIImage)

结果将如下图所示

在此处输入图像描述

于 2017-02-08T09:26:56.443 回答
0

您可以从情节提要中完成。

添加 UIImageView 并在 Attribute Inspector 中为 Image 属性设置背景图像。

于 2015-02-25T13:12:44.607 回答