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

これは、ViewControllerに背景を追加する方法ではありません。ビューコントローラサブクラスに新しいUIImageViewivarを追加し、それを使用します。

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

この画像ビューを正しく作成する必要があります。Interface Builderで画像ビューを追加してivarにリンクするか、またはimageViewで自分で画像ビューを作成します。awakeFromNibloadView

于 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 に答える