UIImageView のフレームを変更できないという非常に特殊な問題に遭遇しました。
この非常に単純な例にそれを分離しました。デフォルトのシングル ビュー アプリケーション xcode テンプレートから始めて、Interface Builder に UIImageView を追加し、それを testImage という ViewController プロパティにリンクし、ViewController.m に以下を追加します。
-(void)viewDidAppear:(BOOL)animated{
UIImageView* maskImage = [[UIImageView alloc] initWithFrame:self.testImage.frame];
maskImage.image = self.testImage.image;
maskImage.alpha = 0;
[self.view addSubview:maskImage];
self.testImage.frame = CGRectMake(10, 10, 10, 10);
}
そしてそれは機能しません。テスト画像は元の場所にしっかりと残っています。ビューに maskImage を追加しない場合、例は機能します。そして、はい、宛先を maskImage でカバーしていないと確信しています。
画像の配置に IB を使用せず、代わりに次を使用する場合:
self.testImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 100, 300, 300)];
self.testImage.image = [UIImage imageNamed:@"jim-105.png"];
[self.view addSubview:self.testImage];
viewDidLoad では、すべて期待どおりに機能します。
また、画像をIBに配置し、そのプロパティをviewDidLoadに設定しようとしましたが、同じ効果があります。Xcode5でこれを試しています。ここで以前の Xcode にアクセスすることはできません。これが予期された動作なのか (もしそうならなぜ)、それともバグなのかわかりません。