0

通常どおり、UIViewController の UIView に UIImageView を追加しself.viewます。画像がビュー全体をカバーするように、画像ビューのフレームは同じです。ただし、ステータスバーとimageViewの間に約20pxのパディングがあり、取り除くことができないようです。

さまざまなフレームを NSLogging してみましたが、次の結果が得られました。

 NSLog(@"ImageView => %@", NSStringFromCGRect([imageView frame]));
 NSLog(@"self.view => %@", NSStringFromCGRect(self.view.frame));
 NSLog(@"Screen Bounds => %@", NSStringFromCGRect([[UIScreen mainScreen] bounds]));
 NSLog(@"App window => %@", NSStringFromCGRect([[[[UIApplication sharedApplication] delegate] window] frame]));

[LaunchViewController.m: line 26] ImageView => {{0, 0}, {320, 548}} 
[LaunchViewController.m: line 27] self.view => {{0, 0}, {320, 548}} 
[LaunchViewController.m: line 28] Screen Bounds => {{0, 0}, {320, 568}}   
[LaunchViewController.m: line 29] App window => {{0, 0}, {320, 568}}

結果は、イメージ ビューが実際にはself.view、それ自体とステータス バーの間にパディングがまったくないことを示しています。

UIViewController は UINavigationController のルート ビュー コントローラーであり、ナビゲーション バーを非表示に設定しました。これが問題を引き起こしているのではないかと思いましたが、UINavigationController を削除して UIViewController だけに置き換えた後も、パディングは残っていました。

パディングを削除するためのアドバイスはありますか / 以前にこの問題を経験したことがあり、修正されていますか?

何が起こっているかを示す画像を次に示します。緑色の領域は UIView ( self.view) で、オレンジ色の領域は UIImageView です。

ここに画像の説明を入力

[self.navigationController setNavigationBarHidden:YES];
[self.view setBackgroundColor:[UIColor greenColor]];

UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.frame];
[imageView setImage:[UIImage imageNamed:@"Orange-568h@2x.png"]];
[self.view addSubview:imageView];
4

7 に答える 7

1

を参照してくださいself.view。ステータス バーが表示されているので、20 ポイント下にあります。self.view.frameしたがって、(0,20,w,h)

画像ビューは同じ四角形(0,20,w,h)を取り、それを に追加しself.viewます。self.view画像ビューに関して、そのフレームを の「y」位置より 20 ポイント下に設定しself.viewます。

self.view.bounds画像表示枠に設定してみてください。

お役に立てれば!

于 2013-05-28T06:13:12.870 に答える
1

私は同じ問題を抱えていましたが、これで解決しました:

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

self.view.frameあなたに間違っxy、ステータスバーが表示されていない場合hidden

于 2013-05-26T14:38:55.733 に答える
0

メソッドでviewDidLoadUIViewController の xib がロードされ、ユーザー インターフェイスに関する更新された値が検出されません。

UIView がまったく同じ (UINavigationBar、UITabbar、ステータスバー、またはデバイス - iPhone 3.5 インチ / 4 インチの変更がない) 場合、これは問題を引き起こしません。ただし、その過程で何かを変更している場合、 で誤った値が得られる可能性がありますviewDidLoad

これを確認する最も簡単な方法は、UI が更新された後に、viewDidAppear で画面とビューの境界をデバッグすることです。

xib/ストーリーボードを確認してください。現在の UI と設計されたインターフェイスの間に変更があります。

これを解決するには、関数updateUIを使用して、viewDidAppear関連するビューを再度更新します。

[self.imageView setFrame:self.view.frame]

これで修正されます。

于 2013-05-26T13:53:42.827 に答える
0

代わりに UIImageView を試してください*imageView = [[UIImageView alloc] initWithFrame:self.view.bounds];boundsの代わりに使用frame

于 2013-05-26T13:48:47.130 に答える
0

移動してみてください [self.navigationController setNavigationBarHidden:YES]; に

- (void) viewWillAppear: (BOOL) animated
{
    [super viewWillAppear: animated];    

    [self.navigationController setNavigationBarHidden: YES
                                             animated: NO];
}
于 2013-05-26T14:48:46.240 に答える
-1

imageView を self.view に追加するときは、self.view.frame を self.view.bounce に変更してみてください。

UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.frame];

または、単に CGRectMake(0,0,320,568) を使用します

于 2013-05-26T13:50:51.420 に答える