[解決済み】iOS 7: UITableViewがステータスバーの下に表示される
質問
私のアプリケーションの最初の画面は
UITableViewController
ナビゲーションバーがないため、コンテンツはステータスバーの下に流れ、テキストの衝突が多くなります。の両方のプロパティを調整しました。
Under top bars
と
Adjust scroll view insets
を使用すると、実際に下にスクロールしなくなりますが、その代償としてテーブルビューの上部を下に維持することになります。私は
UITableView
フレームを 20 ピクセルオフセットする必要がありますが、効果がないようです。現在、アプリを iOS 6 と互換性が必要なため、iOS 7 Storyboards にジャンプして自動レイアウトに上部の高さガイドを使用するように強制することはできません。どなたか、両方のバージョンで機能する解決策を見つけた方はいらっしゃいますか?
試してみたこと
edgesForExtendedLayout
のStoryboard内の設定を変更する。
Under top bars
と
Adjust scroll view
で、新しい領域にフレームを強制的に移動させます。
百聞は一見に如かず。
解決方法は?
これを再現したい方は、以下の手順を踏むだけです。
- iOSプロジェクトを新規に作成します。
-
メインストーリーボードを開き、default/initialを削除します。
UIViewController
-
をドラッグして、新しい
UITableViewController
オブジェクト・ライブラリから - 初期ビューコントローラーとして設定する
- テーブルにテストデータを供給する
上記の手順でアプリを実行すると、Xcodeのチェックボックスで "Extend Edges Under {Top, Bottom, Opaque}を調整することも含めて、何もできないことがわかります。Bars"は、ステータスバーの下に最初の行が表示されるのを阻止するために機能します。
例)上記のシナリオの場合、以下のようになります。 いいえ の効果があります。
// These do not work
self.edgesForExtendedLayout=UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars=NO;
self.automaticallyAdjustsScrollViewInsets=NO;
この問題は非常にイライラさせられますが、私はApple側のバグだと考えています。
UITableViewController
をオブジェクトライブラリから削除してください。
私は、例えば20pxのデルタを使用するなど、何らかの形でマジックナンバーを使用してこの問題を解決しようとしているすべての人に反対です。このような密結合のプログラミングは、Appleがここで私たちに望んでいることではありません。
この問題に対して、私は2つの解決策を発見しました。
-
を保存する。
UITableViewController
のシーン :
を維持したい場合はUITableViewController
を別のビューに手動で配置することなく、ストーリーボードに埋め込むことができます。UITableViewController
の中にUINavigationController
(Editor > Embed In > Navigation Controller)で、インスペクタの "Shows Navigation Bar" のチェックを外してください。これにより、余分な微調整をすることなく問題が解決され、またUITableViewController
のシーンがストーリーボードに表示されます。 -
AutoLayout を使って
UITableView
別のビューに (Appleはこのような方法を望んでいると思います。) :
空のUIViewController
をドラッグしてUITableView
をその中に入れてください。次に、Ctrlキーを押しながらUITableView
をステータスバーの方に移動します。マウスがステータスバーの一番下まで来ると、「"トップレイアウトガイド"」というオートレイアウトのバブルが表示されます。マウスを離し、"Vertical Spacing"を選択します。これでレイアウトシステムがステータスバーの真下に配置するようになります。
私は空のアプリケーションで両方の方法をテストし、どちらも動作しました。あなたのプロジェクトで動作させるためには、いくつかの特別な調整が必要かもしれません。
関連
-
[解決済み] ペン先を読み込んだが、「表示」コンセントが設定されていない
-
[解決済み] UTF-8でエンコードされたNSDataをNSStringに変換します。
-
[解決済み] Xcode Simulatorのアニメーションをエディタで再生すると、極端に遅くなる。
-
[解決済み] なぜSwiftでUIViewControllerのデフォルトのsuper.init()を呼び出すことができないのでしょうか?
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] UITableViewの選択を無効にするにはどうすればよいですか?
-
[解決済み] iOSのステータスバーの文字色を変更する方法
-
[解決済み] iOS7でスタイルUITableViewStyleGroupedを持つUITableViewの上部に余分なパディングがあるのはなぜですか?
-
[解決済み] iOS 7でステータスバーとナビゲーションバーがビューの境界を越えて表示される
-
[解決済み】UIScrollView Scrollable Content Size Ambiguity
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エラーです。cocoapodsでRestKitをインストール後、「サンドボックスがPodfile.lockと同期していない...」と表示される
-
[解決済み] Xcodeで "No such module "というエラーが出るが、フレームワークはある
-
[解決済み] UTF-8でエンコードされたNSDataをNSStringに変換します。
-
[解決済み] Swiftを使って音を鳴らすには?
-
[解決済み] 新しいアウトレット接続を挿入できませんでした。という名前のクラスの情報が見つかりませんでした。
-
[解決済み] なぜibtoolはexit code 255で失敗したのでしょうか?
-
[解決済み] 脱獄したiphoneで`uicache`コマンドは何をするのですか?[クローズド]
-
[解決済み] viewDidLoad()は何のためにあるのですか?[重複]する
-
[解決済み】UITableViewControllerを使用しないUIRefreshControl
-
[解決済み】iOS7でのautomaticallyAdjustsScrollViewInsets、extendedLayoutIncludesOpaqueBars、edgesForExtendedLayoutの違いについて説明する。