web-dev-qa-db-ja.com

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

IBOutletへのUIImageViewがありますが、UIImageViewのドキュメントを見ると、プログラムで変更するためのヒントが表示されません。 UIImageからUIImageViewオブジェクトを取得する必要がありますか?

132
Thanks

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に追加してからトランジションを追加できます。

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

185
Jordan

NIBファイルは、ビューがシーンに追加されるまで、すべてのIBOutletsを結び付けないことに注意してください。物事を手動で接続している場合(物事が別々の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"];
37
samkass

これは私のために働いた

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

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

29
Gilall
imageView.image = [UIImage imageNamed:@"myImage.png"];
23
Lukas Wiklund

これをグーグルで問題を解決しようとする人々のために、ヘッダーファイルでプロパティを適切に宣言し、実装ファイルで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]];
16
swiecki

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")!)!)
    }

}
14
King-Wizard

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

 [imageView setHidden: NO];

また、メインUIViewに添付することを忘れないでください:

[mainView addSubview: imageView];

そして、前面に持ってくる:

[mainView bringSubviewToFront: imageView];

これらすべての手順を組み合わせることで、謎を解くことができます。

9
Adi

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

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

で呼び出す:

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

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

また、ImageView Frameを設定するのを忘れてはいけません。

ここにコードがあります

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

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

[self.view addSubview:myImage];
7
Rajneesh071

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

let image = UIImage(named: "testImage")
imageView.image = image
imageView.sizeToFit()
scrollView.contentSize = imageView.bounds.size
6
Miroslav Hrivik
myUIImageview.image = UIImage (named:"myImage.png")
4
Helton Wernik

この質問にはすでに多くの答えがありました。残念ながら、私のために働く人はいませんでした。完成のために、私が助けたものを追加します:

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

代わりに、次のようにimageWithContentsOfFile:を使用します。

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

誰もそこまで読んだら知りませんか?

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

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

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

Swift 5(XCode 10.3)の操作はただ

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

ImageViewで画像を設定するには、次のコード行を使用します。

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