4

imageView が表示されない問題をデバッグしています。

imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:imageName]];
NSLog(@"imageView right after initialization is: %@", imageView);

imageView.frame = CGRectMake(2, 0, 316, 45);
imageView.layer.zPosition = zPos;
NSLog(@"imageView after running the setters: %@", imageView);

[self.view addSubview:imageView];

奇妙な部分は、imageView表示される場合と表示されない場合があることです (表示される時間の約 75%)。

imageView上記のコード以外にはアクセスされません。

私が気づいたのは、imageView が表示されていない場合、最初のログ ステートメントが次のことを示していることです。

初期化直後のimageViewは次のとおりです。 <UIImageView: 0x9eaa760; フレーム = (0 0; 0 0); userInteractionEnabled = NO; 層 = <CALayer: 0x9ec04a0>>

画像ビューが表示されている場合:

初期化直後のimageViewは次のとおりです。 <UIImageView: 0xaa61ad0; フレーム = (0 0; 644 88); 不透明 = いいえ; userInteractionEnabled = NO; レイヤー = <CALayer: 0xaa61330&rt;&rt;

編集: 何十ものテストを実行しましたが、imageView は常に同じように動作します: 表示されていない場合、初期フレームは (0 0; 0 0) です。そうでない場合は、常に他の値になります。

PS私はARCを使用していません。

4

3 に答える 3

2

最初にフレームを設定し、次に画像を設定してみませんか?

 imageView = [UIImageView alloc]initWithFrame:CGRectMake(0,0,35,35)];
 [imageView setImage:[UIImage imageNamed:@"img.png"]];
于 2013-09-09T08:57:59.930 に答える
2

UIImageViewit showのログでは、frame = (0 0; 0 0);これは、高さと幅が 0 であるため、ビューが表示されないことを意味します。これは、画像にサイズがないか、nil.

これの原因はおそらく、ロードしようとしている画像が見つからないためです: 画像が見つかったかどうかを確認する必要があります:

UIImage *image = [UIImage imageNamed:imageName];
if (!image) {
   NSLog(@"Image could not be found: %@", imageName);
}

imageView = [[UIImageView alloc] initWithImage:image];

つまり、フレームを変更しても、画像が読み込まれていないため、何も表示されません。

于 2013-09-09T09:01:26.167 に答える
1

rckoenes の 回答に加えて 、最初にバンドル パス内にイメージが存在するかどうかを常に確認する必要があります。

NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *documentsDirectory 
        = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)
             objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:imageName];
    if([fileManager fileExistsAtPath:path])
    {
       UIImage *image = [UIImage imageNamed:imageName];
       if (!image) {
          NSLog(@"Image could not be found: %@", imageName);
       }

       imageView = [[UIImageView alloc] initWithImage:image];
    } else {
       NSLog(@"%@ is not included in the app file bundle!", imageName);
    }

そうすれば、問題がb/cであるかどうか、そもそもファイルがないかどうかがわかります..またはb/cファイルに何か問題があり、iOSがロードできない.

于 2013-09-09T09:36:56.937 に答える