3

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 にアクセスすることはできません。これが予期された動作なのか (もしそうならなぜ)、それともバグなのかわかりません。

4

1 に答える 1