2011-12-15 10 views
2

.hファイルでこれを宣言します。UIImageViewにUIImageViewをプログラムで追加する

IBOutlet UIImageView *image; 

.mファイル。

UIImage *image1 = [UIImage imageName:@"http://image.com/image.jpg"]; 
image = [[UIImageView alloc] initWithImage:image1]; 
image.frame = CGRectMake(0,0, 50,50); 
[self.view addSubView:image]; 

と私はInterface BuilderからUIImageViewを接続しました。しかし、私はこれを行う必要があります(インターフェイスビルダを使用せずに)コードでのみ。誰かがコードを修正してコードでのみ行うことができますか?

答えて

2

接続する必要はありません。このコードは接続せずに動作します。 IBOutletをそのままにしておきます。

+0

私は 'IBOutlet'を削除し、Interface Builderから' UIImageView'を削除する必要があり、コードはうまくいくと言いますか? – Illep

+0

はい。必要なものがすべてあります:imageViewを作成し、イメージを設定し、フレームを設定してビューに追加します。 – Chakalaka

2
UIImage *someImage = [UIImage imageName:@"http://image.com/image.jpg"]; 
UIImageView* imageView = [[UIImageView alloc] initWithImage:someImage]; 
[self.view addSubView:imageView]; 
+0

UIImageViewのサイズを指定していないので、画像全体がフレームになりますか? – Illep

+0

これは自動的にそれを初期化している画像 'someImage'のサイズに設定します。 –

7

私はuiimageviewでリモートイメージを表示する際に問題があると思うので、そのようにしてください。

NSData *receivedData = [[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://image.com/image.jpg"]] retain]; 
UIImage *image = [[UIImage alloc] initWithData:receivedData] ; 

UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
imageView.frame = CGRectMake(0,0, 50,50); 
[self.view addSubView:image]; 

[image release]; 
[imageView release]; 
+0

なぜ 'initWithImage'を使っていないのですか?あなたのコードで使われている 'NSData'を使う目的は何ですか? – Illep

+0

私はinitWithImageメソッドを使いました。そして、あなたがバイナリ形式で特定のイメージをダウンロードするためにdataWithContentsOfURLメソッドを使わなければならないという理由からURLからイメージを受け取りたいと思っています。 –

+0

私は初心者です。バイナリ形式(コード化した方法)でダウンロードする利点と、他の人の回答に表示される方法を教えてください。 (私は初心者ですので、私にundestandを助けることができます) – Illep

3

と私は間違いだったインターフェイスビルダー

からUIImageViewを接続します。これを行うと、imageインスタンス変数が指すイメージビューは間違ったものになります - ペン先のものです。コードで作成したものにします。

したがって、Interface Builderから接続しないでください。実際には、Interface Builderからイメージビューを削除して、自分自身を混同しないようにしてください。あなたのインスタンス変数も財産であることを確認してください:

@property (nonatomic, retain) UIImageView* image; 

は、プロパティを合成:

@synthesize image; 

今、あなたのコードは動作します:

UIImage *image1 = [UIImage imageName:@"http://image.com/image.jpg"]; 
self.image = [[UIImageView alloc] initWithImage:image1]; 
// no memory management needed if you're using ARC 
[self.view addSubview:self.image]; 

あなたがされるまでのフレームで再生する必要があります場所は正しいです。デフォルトでは、フレームは自動的に画像と同じサイズになります。

+0

「ARC」にはiOS 5が付属していますか? – Illep

+1

はい!私の本があなたのために何をしているのか見てみましょう:http://www.apeth.com/iOSBook/ch12.html#_memory_management – matt

関連する問題