14

修正できないような奇妙なものがあります。現在、アプリを iOS7 にアップデートする作業を行っています。これはすべてiOS6で機能しました。これはユニバーサル アプリであるため、同じ xib ファイルを使用します。ただし、iPad は一部で UISplitViews を使用します。私が言ったように、これはすべてiOS6で機能しました。ああ、これはすべてiPhoneでも機能します。

問題は、下部にある灰色のバーです。一部のUIがビューの下部にクリップされ、タブバーの下に移動し、そこでサイドトラックされたため、タブバーを不透明に変更してビューを適切に移動しました。しかし、半透明のバーに戻すと、下に移動しますが、適切に伸びます。そうしないと、バーが追加されます。スプリットビューを使用しない場合、他のタブは正常に機能します。

UISplitviewController はプログラムで追加されます。

より良い説明については、添付の画像を参照してください。

灰色のバーは分割ビューとタブバーの間にあります

これは私が試しました:

  • 分割ビューに自動サイズ変更を追加
  • 分割ビューのサブビューの xib をチェックして、自動サイズ変更を行いました
  • スプリットビューを強制的に画面の境界にしようとしました
  • すべてのビューでクリップを境界から削除
  • サブビューの自動サイズ変更を削除

どんなアイデアでも大歓迎です。

皆さん、ありがとうございました。

アップデート:

背景色を uisplitview に設定すると、バーが黒くなります。したがって、uisplitview は確実に拡大しています。

4

4 に答える 4

31

UISplitViewController をサブクラス化し、以下の行を viewDidLoad に追加すると、灰色の線が修正されました。

self.extendedLayoutIncludesOpaqueBars = YES;
于 2013-10-07T17:12:23.473 に答える
5

私はあなたのための別の解決策を見つけたと信じています. 私はまったく同じ問題を抱えていましたが、これは主に、SplitViewController が Tabbar コントローラー内にネストされているという Apple のガイドラインに反することを行っているためです (SplitView がルート ビューである必要があります)。これは iOS 5/6 では問題ありませんでしたが、現在 iOS 7 ではこれを達成するには副作用が多すぎます。

バーを半透明に設定するとビューが完全に引き伸ばされるのは、ビューを描画するときにバーが考慮されていないためです。半透明をfalseに設定すると、ビューが考慮され、画面の下部にタブバーがあるふりをするビューであるため、そこに灰色のバーが表示されます。

また、SplitView コントローラーの高さは、表示されるウィンドウの高さによって決まるため、変更することはできません。

私はあなたがしたことすべてを試しました。実際の解決策は、サードパーティの Split View Controller を使用することから生まれました。

https://github.com/mattgemmell/MGSplitViewControllerに切り替えることをお勧めします。この分割ビュー コントローラーは、実際には 1 つの大きなビューであり、その中にコンテナー ビューが存在します。このため、実際の分割ビュー コントローラーをタブ バー内に配置することによるすべての副作用を回避できます。

これでうまくいかない場合は、1 つの UIViewController に 2 つのコンテナー ビューを含めるという同じ考えに従う独自のソリューションを作成できますが、MGSplitViewController の背後にいる人々は既にそれをうまく行っています。

これが私がこの問題を解決できた唯一の方法でした。別の方法が見つかった場合はお知らせください。

于 2013-10-03T17:59:16.613 に答える
2

のサブクラスを作成する代わりにUISplitViewController、マスターに次のコードを追加しましたviewDidLoad

self.splitViewController?.extendedLayoutIncludesOpaqueBars = true
于 2015-07-12T20:36:41.700 に答える
0

UISplitViewController の詳細ビューであるコントローラーの場合、次のようにします。

-(UITabBarController*)tabBarController{
    return nil;
}
于 2014-06-13T10:48:02.630 に答える