iOS在加载时设置/更改背景图像

时间:2012-10-24 12:54:10

标签: ios cocoa-touch uiimage

我必须对iPhone应用程序进行som更改...

如何在加载时更改UIViewController的背景(viewDidLoad)..我必须从URL显示一个.png。这是可行的吗?

我试过了:

NSURL *url = [NSURL URLWithString:@"http://url_to_my_project/xmas-bg-test.png"];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:data];

self.view.backgroundColor = [UIColor colorWithPatternImage:image];

这是来自我:“ - (void)viewDidLoad”方法..当我启动我的应用程序时没有发生任何事情..没有错误以太。

我也尝试过我的.. viewDidAppear

3 个答案:

答案 0 :(得分:1)

这不是你如何向视图控制器添加背景。将新的UIImageView ivar添加到视图控制器子类中并使用它。

- (void)viewDidLoad {
    ...
   imageView.image = [UIImage imageWithData:data];
}

您必须确保正确创建此图像视图。通过在Interface Builder中添加图片视图并将其链接到imageView ivar,或者在awakeFromNibloadView中自行创建。

答案 1 :(得分:1)

您必须创建UIImageView作为背景图片。删除self.view.backgroundColor = ...行并添加:

UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = self.view.frame;
[self.view addSubview:imageView];
[self.view sendSubviewToBack:imageView];

viewDidLoad:方法中。

答案 2 :(得分:0)

其他答案对于说您应该使用图像视图来显示图像是正确的。但是,您应该考虑请求图像。这样,如果请求失败,您可以通过显示不同的图像或任何您想要的图像来处理它。这是一个粗略示例。

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://url_to_my_project/xmas-bg-test.png"] cachePolicy:NSURLCacheStorageNotAllowed timeoutInterval:5.0];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
    if (response && !error) {
        UIImage *image = [UIImage imageWithData:data];
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.bounds];
        [imageView setImage:image];
        [self.view addSubview:imageView];
    }
}];