我必须对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
答案 0 :(得分:1)
这不是你如何向视图控制器添加背景。将新的UIImageView
ivar添加到视图控制器子类中并使用它。
- (void)viewDidLoad {
...
imageView.image = [UIImage imageWithData:data];
}
您必须确保正确创建此图像视图。通过在Interface Builder中添加图片视图并将其链接到imageView
ivar,或者在awakeFromNib
或loadView
中自行创建。
答案 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];
}
}];