46

Container View を持つ UIViewController があります。このコンテナ ビューには、UITableViewController が含まれています。

UIViewController は UINavigationController に組み込まれています。色合い、バーの色合い、およびタイトル テキスト属性を変更して NavigationBar を構成しますが、透過性を変更しようとすると問題が発生します。他のすべてのカスタマイズ コードを削除して、問題を特定しました。UIViewController でこれを行うたびに-viewDidLoad:

self.navigationController.navigationBar.translucent = NO;

コンテナ ビューは、独自のナビゲーション バーがあるかのように、それ自体の上にスペースを追加します。半透明を YES に設定すると、ビューにはすべてが正しく表示されます。これは、半透明を NO に設定するたびに、含まれているビューでのみ発生します。

私がここで見逃しているものはありますか?

含まれているビューで半透明をYES設定し、非表示に設定しようとしましたが、何も機能しませんでした。どういうわけか、含まれているビューは親のコンテナーからプロパティを継承していますか? 半透明度を に設定するたびに、含まれるビューにこの余分なスペースが作成されないようにするにはどうすればよいNOですか?

半透明度の設定は半透明度にのみ影響し、ビューの位置には影響しないと思います。

半透明=YESの場合

+---------------------------------+
|                                 |
|     UINavigationBar             |
|                                 |
+---------------------------------+
|                                 |
|                                 |
|                                 |
|                                 |
|                                 |
|    UITableViewController        |
|    in a Contained View          |
|                                 |
|                                 |
|                                 |
|                                 |
|                                 |
|                                 |
+---------------------------------+

半透明 = NO の場合

+---------------------------------+
|                                 |
|     UINavigationBar             |
|                                 |
+---------------------------------+
|                                 |
|blank space created on top of view
|                                 |
+---------------------------------+
|                                 |
|                                 |
|                                 |
|                                 |
|                                 |
|                                 |
|     UITableViewController       |
|     in a Contained View         |
|                                 |
+---------------------------------+

PS My View はこれよりも複雑です。

4

8 に答える 8

24

に次のコード行を追加して、この問題を修正しました-viewDidLoad

self.extendedLayoutIncludesOpaqueBars = YES;
于 2016-11-17T10:59:44.920 に答える
0

これは純粋に自動レイアウトの問題によるものです。開始時にいくつかのビューを隠している可能性があります。すべてのビューを表示して、スペースがまだあるかどうかを確認してください。

于 2017-07-20T06:03:44.500 に答える
-4

tableView.opaque = false私のために働いた設定

于 2016-01-24T14:07:14.157 に答える