プログラムでUIImageViewに表示される画像を変更するにはどうすればよいですか?


134

私が持っているIBOutletのをUIImageView、私は見たときUIImageViewのdoc、私はプログラム的にそれを変更することについてのヒントを見ることができません。それからUIImageオブジェクトをフェッチする必要がありますUIImageViewか?

回答:


185

UIImageViewへのIBOutletがすでにある場合は、画像を取得してレシーバー(UIImageView)でsetImageを呼び出すだけです。画像を取得する2つの例を以下に示します。1つはWebから、もう1つはXcodeのResourcesフォルダーに追加します。

UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://farm4.static.flickr.com/3092/2915896504_a88b69c9de.jpg"]]];

または

UIImage *image = [UIImage imageNamed: @"cell.png"];

画像を取得したら、UIImageViewを設定できます。

[imageView setImage:image];

上記の行は、imageViewがIBOutletであると想定しています。

それでおしまい!凝ったものにしたい場合は、UIViewに画像を追加してから、遷移を追加できます。

PSメモリ管理は含まれていません。


1
おかげで、それは機能しません:(私は画像をインターフェイスビルダーで削除したため、UIImageViewは空です。次に、これをviewDidLoadメソッドに実装しました。ただし、何も起こりません。画像名は100%正しく指定されています。また、setImageで割り当てましたアウトレットへ私は試みることができる他に何か。?
おかげで

3
おそらく、IBOutletをIBのViewController参照に接続していません。画像がResourcesフォルダーにあることを確認します。
ジョーダン

ネクロのルール/ SOへの影響はわかりませんが、これが問題の解決に役立ったことは確かです。iOS v5.1、xcode 4.3.2を使用しています
Jake

1
画像を変更する前に、[UIViewController viewDidLoad]が呼び出されていることを確認してください。私はそれによって閉じ込められました。8)
poGUIst

1
このソリューションに追加して、画像アセットカタログを使用している場合は、画像セットの名前を指定するだけです。例:UIImage * image = [UIImage imageNamed:@ "My Icon"]; UIImage * image = [UIImage imageNamed:@ "myicon.png"]の代わりに;
Keith OYS 2014年

37

ビューがシーンに追加されるまで、NIBファイルはすべてのIBOutletを結び付けないことに注意してください。手動で配線する場合(別のNIBにある場合は配線する場合があります)、覚えておくことが重要です。

したがって、私のテストビューコントローラにnibで配線された「imageView」がある場合、これはおそらく機能しません。

  testCardViewController.imageView.image = [UIImage imageNamed:@"EmptyCard.png"];
  [self.view addSubview:testCardViewController.view];

しかし、これは:

  [self.view addSubview:testCardViewController.view];
  testCardViewController.imageView.image = [UIImage imageNamed:@"EmptyCard.png"];

29

これは私のために働いた

[ImageViewName setImage:[UIImage imageNamed: @"ImageName.png"]];

ImageViewが.hファイルで適切に宣言され、IB要素にリンクされていることを確認してください。



16

これをググって問題を解決しようとしている人のために、ヘッダーファイルでプロパティを適切に宣言し、実装ファイルでUIImageViewを合成することを忘れないでください... getterおよびsetterメソッド。

#import <UIKit/UIKit.h>

@interface YOURCONTROLLERNAME : UIViewController {
    IBOutlet UIImageView *imageToDisplay;
}

@property (nonatomic, retain) IBOutlet UIImageView *imageToDisplay;

@end

そしてあなたの.mで:

@implementation YOURCONTROLLERNAME

@synthesize imageToDisplay;
//etc, rest of code goes here

そこから、次のようなものを使用して画像を設定してください。

[YOURCONTROLLER.imageToDisplay setImage:[UIImage imageNamed:value]];

ありがとう!xcodeとiphoneを初めて使用するので、imageToDisplayの前にYOURCONTROLLERがありませんでした。
Opy

15

Swiftの例:

import UIKit

class ViewController: UIViewController {

    @IBOutlet var myUIImageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func myAction(sender: UIButton) {
        let newImg: UIImage? = UIImage(named: "profile-picture-name")
        self.myUIImageView.image = newImg
    }

    @IBAction func myAction2(sender: UIButton) {
        self.myUIImageView.image = nil
        self.myUIImageView.image = UIImage(data: NSData(contentsOfURL: NSURL(string: "http://url/image.png")!)!)
    }

}

9

Jordanのアドバイス(実際に機能するはずです)に従って、UIImageViewが表示されるように設定してみます。

 [imageView setHidden: NO];

また、メインのUIViewにアタッチすることを忘れないでください。

[mainView addSubview: imageView];

前面に出すには:

[mainView bringSubviewToFront: imageView];

これらすべてのステップを組み合わせることで、謎を解くのに役立つことを願っています。


8

私の問題は、別のスレッドで画像を変更しようとしたことでした。私はこれが好きでした:

- (void)changeImage {
    backgroundImage.image = [UIImage imageNamed:@"img.png"];
}

次の電話番号:

[self performSelectorOnMainThread : @selector(changeImage) withObject:nil waitUntilDone:NO];

2
うん、これは私をちょっと...もう一度...また使用できますdispatch_async(dispatch_get_main_queue(), ^{backgroundImage.image = [UIImage imageNamed:@"img.png"];})
Dex

7

UIImageViewプログラムで画像を設定する場合は、メインビューにサブビューUIImageView として追加することを忘れないでください。

また、ImageView Frameを設定することを忘れないでください。

ここにコードがあります

UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];

myImage.image = [UIImage imageNamed:@"myImage.png"];

[self.view addSubview:myImage];

7

sizeToFit()UIImageViewのサイズを使用してUIScrollView contentSizeを設定したり、ズームスケールを計算したりする場合は、画像を変更した後に呼び出すことを忘れないでください。

let image = UIImage(named: "testImage")
imageView.image = image
imageView.sizeToFit()
scrollView.contentSize = imageView.bounds.size


2
UIColor * background = [[UIColor alloc] initWithPatternImage:
    [UIImage imageNamed:@"anImage.png"]];

self.view.backgroundColor = background;
[background release];

これは、UIViewの背景またはUIImageViewの画像プロパティによって画像を表示するのと同じですか?
voromax

2

この質問にはすでに多くの回答がありました。残念ながら、私にはうまくいきませんでした。それで、completenesのために、私を助けたものを追加します。

同じ名前の画像が複数あったので、サブフォルダに入れて注文しました。そして、表示したい画像ファイルへのフルパスがありました。imageNamed:(上記のすべてのソリューションで使用されている)フルパスでは機能せず、間違った方法でした。

代わりに私は今のimageWithContentsOfFile:ように使用します:

self.myUIImage.image = [UIImage imageWithContentsOfFile:_currentWord.imageFileName];

誰かがここまで読んだら、わからない?

もしそうなら、これはあなたを助けました:投票してください。;-)


1

Swift 5(XCode 10.3)での作業はそれだけです

yourImageView.image = UIImage(named: "nameOfTheImage")

0

imageViewに画像を設定するには、以下のコード行を使用します。

self.imgObj.image=[UIImage imageNamed:@"yourImage.png"];                         

プロジェクトに画像をコピーしてから、上記のコードを使用します
Vaibhav Shiledar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.