[解決済み] ナビゲーションバーの高さをプログラムで取得する
質問
more viewコントローラ(ナビゲーションバー)があると、UIViewがその高さ分押し下げられることは知っています。 また、この高さ=44pxであることも知っています。 また、この押し下げによって
[self.view].frame.origin.y = 0
.
では、このナビゲーションバーの高さは、定数に設定する以外に、どのように決めればよいのでしょうか。
あるいは、UIViewがナビゲーションバーを上にして表示されているかどうかを判断するにはどうしたらよいでしょうか。
電球がつきはじめました。残念ながら、以下のような画一的な修正方法は見つかっていません。
私は、私の問題の中心はautoresizingMasksにあると信じています。そして、私がそう結論づけた理由は、UIWebViewがあってもなくても、同じ症状が存在するからです。そして、その症状とは、ポートレートではすべてが順調であることです。Landscapeでは、一番下のUIButtonがTabBarの後ろにポップダウンしています。
例えば、あるUIViewでは、上から下に向かって
UIView - スプリングが両方設定されている(デフォルトの場合)、ストラットなし
UIScrollView - 2つのスプリングを設定し、他のすべてをクリアすると(UIViewのように)、UIButtonはそのすぐ上のオブジェクトに侵入します。すべてをクリアすると、UIButtonはOKですが、一番上のものはStatusBarの後ろに隠れてしまいます。 一番上の支柱だけを設定すると、UIButtonはTab Barの後ろに飛び出してしまいます。
UILabel と UIImage を縦に並べる - トップストラットを設定し、それ以外はフレキシブルに変更可能
UIWebViewを持っている少数の人のために、画像を完成させるだけです。
UIWebView - Struts: top, left, right スプリングス: 両方
UIButton - 何も設定されていない、つまりどこでもフレキシブルに使える
私の電球は薄暗いですが、希望はあるようです。
このような場合、「震災の影響によるもの」と考えるのが自然でしょう。
私が本当に求めているものを理解しようとしてくれてありがとう......だからここに行くんだ。
1) 各UIViewController(TabBarアプリ)には、UIImage、いくつかのテキスト、および上部に何かがあります。もう一つの共通点は、下部のUIButtonです。いくつかのUIViewControllerでは、UIButtonの上にUIWebViewを持っています。
つまり、UIImage、テキストなど。UIWebView (SOMEの場合) UIButton
上記すべてを囲むのは、UIScrollViewです。
2) UIWebViewを持つものについては、そのautoresizingMaskは次のようになります。
—
|
—
^
|
|
| | V UIButtonのマスクには何も設定されていない、つまり、どこでもフレキシブルに対応できます。
viewDidLoadの中で、-repositionSubViewsを呼び出し、その中で以下のことを行っています。
UIWebViewがない場合は、IBで配置したUIButtonをセンタリングする以外は何もしない。
UIWebViewがある場合は、その*content*Heightを決定し、コンテンツ全体を囲むようにフレームを設定します。
UIScrollView *scrollViewInsideWebView = [[webView_ subviews] lastObject];
webViewContentHeight = scrollViewInsideWebView.contentSize.height;
[webView_ setFrame:CGRectMake(webViewOriginX, webViewOriginY,
sameWholeViewScrollerWidth, webViewContentHeight)]
そうしたら、プログラム的にUIButtonを押し下げて、UIWebViewの下に配置されるようにします。
縦長から横長に回転させるまでは、すべてうまくいきました。
私は -didRotateFromInterfaceOrientation の中で -repositionSubViews を呼び出しています。
UIWebViewのコンテンツの高さが回転に伴って変化しないのはなぜですか?
縦長から横長へ、コンテンツの幅は広がり、高さは縮むはずです。視覚的にはそのように見えますが、私のNSLogによるとそうではありません。
とにかく、UIWebViewの有無にかかわらず、Landscapeモードでは、お話したボタンはTabBarの下に移動しますが、上にスクロールして見ることはできません。また、UIWebViewの有無にかかわらず、Landscapeモードでは、ボタンはTabBarの下に移動しますが、上にスクロールして見ることはできません。
結論から言うと、この最後が、TabBarがUIViewの底に身を置き、NavigationBarがUIViewを押し下げるため、TabBarとNavigationBarの高さについて質問させていただいた理由です。
さて、先ほどは意味がなかったでしょうから、ここで一つ二つコメントを付け加えます。
UIWebViewがないため、IBから見えるようにすべてそのままにしています。
UIWebViewで、UIWebViewのframe.heightをcontentHeightまで上げ、すべてのサブビューを囲む周囲のUIScrollViewの高さも上向きに調整します。
さて、これで完成です。
解決方法は?
電球が点くようになった。 残念ながら、以下のような画一的な修正方法は見つかっていません。
私は、私の問題の中心はautoresizingMasksにあると信じています。 そして、私がそう結論づけた理由は、UIWebViewがあってもなくても、同じ症状が存在するからです。 そして、その症状とは、ポートレートではすべてが順調であることです。 Landscapeでは、一番下のUIButtonがTabBarの後ろにポップダウンしています。
例えば、あるUIViewでは、上から下に向かって
UIView - 両方のスプリングを設定し(デフォルトの場合)、ストラットなし
UIScrollView - 2つのスプリングを設定し、他のすべて(UIViewなど)をクリアすると、UIButtonはそのすぐ上のオブジェクトに侵入してしまいます。 すべてをクリアすると、UIButtonはOKですが、一番上にあるものはStatusBarの後ろに隠れてしまいます。 一番上の支柱だけを設定すると、UIButtonはTab Barの後ろに飛び出す。
UILabelとUIImage 次ページ 垂直方向-上部の支柱はセット、その他はフレキシブルに対応
UIWebViewを持っている少数の人のために、絵を完成させるだけです。
UIWebView - ストラット:上、左、右 スプリング:両方
UIButton - 何も設定されていない、つまりどこでもフレキシブルに対応できる
私の電球は薄暗いですが、希望はあるようです。
関連
-
IOS8 Development Guide Error Thread 1: signal SIGABRT
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] iOSのステータスバーの文字色を変更する方法
-
[解決済み] SwiftでStringを配列に分割する?
-
[解決済み] iOS 7でステータスバーとナビゲーションバーがビューの境界を越えて表示される
-
[解決済み] iPhoneでナビゲーションバーを1ページ目だけ非表示にする
-
[解決済み] Swiftで最初のViewControllerからナビゲーションバーを非表示にする方法は?
-
[解決済み】Swiftでナビゲーションバーの色を変更する
-
[解決済み] UIViewのサブビューをセンタリングする方法
最新
-
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でStringを配列に分割する?
-
[解決済み] UITextViewのプレースホルダー
-
[解決済み] IBOutletsはARCのもとで強くなるべきか、弱くなるべきか?
-
[解決済み] UITextViewのサイズをコンテンツに合わせるには?
-
[解決済み] UINavigationBarの1px下の行を非表示にする方法
-
[解決済み] iOSシミュレータでスクリーンショットを撮る
-
[解決済み] SwiftでiOSキーボードを任意の場所でタッチして閉じる
-
[解決済み] 16進カラーバリューの使用方法
-
[解決済み] Swift 3でディスパッチキューを作成する方法