0

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

如何在加载时更改 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

4

3 回答 3

1

这不是向视图控制器添加背景的方式。将一个新的UIImageViewivar 添加到您的视图控制器子类并使用它。

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

您必须确保正确创建此图像视图。通过在 Interface Builder 中添加图像视图并将其链接到您的imageViewivar,或者通过在awakeFromNibor中自己创建它loadView

于 2012-10-24T12:58:18.883 回答
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:方法。

于 2012-10-24T12:58:28.197 回答
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];
    }
}];
于 2012-10-24T13:07:06.167 回答