[解決済み】iOS7でのautomaticallyAdjustsScrollViewInsets、extendedLayoutIncludesOpaqueBars、edgesForExtendedLayoutの違いについて説明する。
質問
iOS7のUI変更について、いろいろ読んでいます。
以下の3つのプロパティを取得することができません。
automaticallyAdjustsScrollViewInsets
,
extendedLayoutIncludesOpaqueBars
,
edgesForExtendedLayout
??
例えば、ビューコントローラーをステータスバーの下から起動するようにしたいのですが、実現できません。
どうすればいいですか?
iOS7から、ビューコントローラーはデフォルトでフルスクリーンレイアウトを使用するようになりました。同時に、そのビューをどのようにレイアウトするかについて、より多くの制御が可能になり、それはそれらのプロパティで行われます。
EdgesForExtendedLayout
基本的に、このプロパティで、画面全体をカバーするために、ビューのどの辺を拡張できるかを設定します。例えば
UIViewController
の中に
UINavigationController
. そのビューコントローラのビューがレイアウトされるとき、ナビゲーションバーが終わるところから始まりますが、このプロパティは、画面全体を埋めるためにビューのどの辺(上、左、下、右)を拡張できるかを設定します。
例で見てみましょう。
UIViewController *viewController = [[UIViewController alloc] init];
viewController.view.backgroundColor = [UIColor redColor];
UINavigationController *mainNavigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
の値を設定しない。
edgesForExtendedLayout
したがって、デフォルト値が使用されます (
UIRectEdgeAll
) のため、ビューは画面全体を埋めるようにレイアウトを拡張します。
これがその結果です。
ご覧のように、赤い背景がナビゲーションバーとステータスバーの後ろに広がっています。
では、その値を
UIRectEdgeNone
つまり、画面を覆うようにビューを拡張しないよう、ビューコントローラに指示しています。
UIViewController *viewController = [[UIViewController alloc] init];
viewController.view.backgroundColor = [UIColor redColor];
viewController.edgesForExtendedLayout = UIRectEdgeNone;
UINavigationController *mainNavigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
そして、その結果。
automaticallyAdjustsScrollViewInsetsを使用します。
このプロパティは、ビューが
UIScrollView
などのように
UITableView
. テーブルの開始位置はナビゲーションバーが終わる位置にしたい。そうしないとコンテンツ全体が見えないからだが、同時に、スクロールしたときにテーブルが画面全体を覆うようにしたい。このような場合
edgesForExtendedLayout
を None に設定しても、テーブルのスクロールはナビゲーションバーが終了したところから始まり、その後ろに移動しないため、うまくいきません。
ビューコントローラがインセットを自動的に調整するようにすると(このプロパティをYESに設定、デフォルト値でもある)、テーブルの上部にインセットが追加されます。
NOに設定されている場合です。
そしてYES(デフォルト)。
どちらの場合も、テーブルはナビゲーションバーの後ろにスクロールしますが、2番目のケース(YES)では、ナビゲーションバーの下から開始されます。
extendedLayoutIncludesOpaqueBars
この値は、これまでのものに追加されるだけです。デフォルトでは、このパラメータはNOに設定されています。ステータスバーが不透明な場合、ステータスバーをカバーするようにビューを拡張しても、ビューは拡張されません (
edgesForExtendedLayout
から
UIRectEdgeAll
).
YESに設定すると、ビューが再びステータスバーの下に入ることができるようになります。
何か不明な点があれば、コメントを書いていただければ、お答えします。
iOSはどのUIScrollViewを使用するかをどのようにして知るのですか?
iOS は ViewController のビューの最初のサブビュー、つまりインデックス 0 のものを取得し、もしそれが
UIScrollView
に、説明したプロパティを適用します。
もちろん、このことは
UITableViewController
はデフォルトで機能します(なぜなら
UITableView
が最初のビューになります)。
関連
-
[解決済み] 'strcmp' はこのスコープで宣言されていません。
-
[解決済み】"宣言はファイルスコープでのみ有効 "について
-
[解決済み] Xcode 10でコマンドCompileSwiftが0以外の終了コードで失敗する [重複] 。
-
[解決済み] swiftで「floor」が使用できない
-
[解決済み] Argument passed to call that takes no arguments "エラーを修正するには?
-
[解決済み] dispatch_queue_create のキュー属性とは?
-
[解決済み] 脱獄したiphoneで`uicache`コマンドは何をするのですか?[クローズド]
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] iOS7でスタイルUITableViewStyleGroupedを持つUITableViewの上部に余分なパディングがあるのはなぜですか?
-
[解決済み] UIViewControllerの上にclearColor UIViewControllerを表示する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Swiftエラー。変数がそれ自身の初期値内で使用されている
-
[解決済み] swiftで「floor」が使用できない
-
[解決済み] シミュレータへのサービス接続の開始に失敗しました Xcode
-
[解決済み] Xcode 9の問題を修正しました。"iPhoneはビジー状態です。iPhoneのデバッガーサポートを準備中"
-
[解決済み] Info.plist ユーティリティのエラーです。"そのようなファイルがないため、Info.plistを開くことができませんでした"
-
[解決済み] ERROR ITMS-9000: "Redundant Binary Upload. 列車 '1.0' のビルドバージョン '1.0' のバイナリアップロードが既に存在します" と表示されました。
-
[解決済み] Xcode 4のBundle creator OS Type code ?
-
[解決済み] SwiftでUIColor patternImageを使用して画像を中心からタイル状に配置する方法
-
[解決済み] Stringをformatで作成するには?
-
[解決済み】iOS 7: UITableViewがステータスバーの下に表示される