1

インスタンス化して iOS アプリ内のプロパティに変換する UIImageView オブジェクトがあります。この UIImageView オブジェクトの属性を viewDidLoad メソッド内で初期化しますが、後で別のメソッドで UIImageView オブジェクト内に含まれる画像を変更する必要があります。これを行うと、何らかの理由で古い画像の上に新しい画像を重ねるだけです。私がやりたいことは、単にフレームのサイズを変更し、古い画像を新しい画像に置き換えることです。

関連するコードは次のとおりです。

私のviewDidLoadメソッド内:

imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 250, 300, 200)];
imageView.image = [UIImage imageNamed:@"firstImage.png"];
[self.view addSubview:imageView];

そして、変更を加えたいメソッド内:

imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 250, 200, 300)];
imageView.image = [UIImage imageNamed:@"secondImage.png"];
[self.view addSubview:imageView];

画像を変更するだけでなく、新しい画像に対応するフレーム サイズも変更したいということを覚えておいてください。誰かが私が間違っていることを見ることができますか?

4

1 に答える 1

3

imageviewの別のインスタンスを作成しています。同じオブジェクトにアクセスし、そこでフレームと画像を変更する必要があります。

これを試して、

imageViewクラスのプロパティとして作成、、

.hファイルでは、

@property(nonatomic, retain) UIImageView *imageView;

その後、でviewDidLoad

self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 250, 300, 200)];
self.imageView.image = [UIImage imageNamed:@"firstImage.png"];
[self.view addSubview:imageView];

2番目の方法では、以下に示すようにフレームと画像を変更するだけです。

self.imageView.frame = CGRectMake(10, 250, 200, 300);
self.imageView.image = [UIImage imageNamed:@"secondImage.png"];

コードに従って、imageViewsの個別のインスタンスを作成し、サブビューとして追加して、別のインスタンスにスーパーインポーズしていました。代わりに、上記のように単一のインスタンスを作成し、必要に応じてそのフレームと画像のプロパティを変更する必要があります。

于 2012-12-06T19:16:21.053 に答える