moreビューコントローラー(ナビゲーションバー)の存在がUIViewの高さを押し下げることは知っています。この高さ= 44pxであることも知っています。このプッシュダウンがを維持していることも発見しました[self.view].frame.origin.y = 0
。
では、このナビゲーションバーの高さを、定数に設定するだけでなく、どのように決定するのでしょうか。
または、より短いバージョンでは、UIViewがナビゲーションバーを上にして表示されていることをどのように判断しますか?
電球が点灯し始めました。残念ながら、以下で説明するように、問題を修正するための統一された方法を発見していません。
私の問題はすべて私の自動サイズ変更マスクに集中していると思います。そして、UIWebViewの有無にかかわらず、同じ現象が存在すると私が結論付けた理由。そしてその症状は、ポートレートにとってすべてが桃色だということです。ランドスケープの場合、一番下のUIButtonがTabBarの後ろにポップアップします。
たとえば、私が持っている1つのUIViewで、上から下へ:
UIView –両方のスプリングが設定され(デフォルトの場合)、ストラットなし
UIScrollView-2つのスプリングを設定し、その他すべて(UIViewなど)をクリアすると、UIButtonはそのすぐ上のオブジェクトに侵入します。すべてをクリアすると、UIButtonは問題ありませんが、最上部にあるものはStatusBarの後ろに隠れます。上部のストラットのみを設定すると、UIButtonはタブバーの後ろにポップアップします。
次の垂直方向のUILabelとUIImage –トップストラットセット、他のあらゆる場所で柔軟
UIWebViewを持っている少数の人のために画像を完成させるためだけに:
UIWebView-Struts:上、左、右Springs:両方
UIButton –何も設定されていない、つまりどこでも柔軟
私の電球は暗いですが、希望があるようです。
短い返答コメントよりも多くのスペースが必要だったので、ご容赦ください。
私が実際に何のために釣りをしているのか理解してくれてありがとう...だからここに行く。
1)各UIViewController(TabBarアプリ)には、UIImage、いくつかのテキスト、その他の上に何でも持っています。別の共通点は、下部にあるUIButtonです。一部のUIViewControllersでは、UIButtonの上にUIWebViewがあります。
したがって、UIImage、テキストなど。UIWebView(一部の)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の有無にかかわらず、私が話したボタンはランドスケープモードではTabBarの下に移動しますが、上にスクロールして表示されません。「勢いよく」スクロールすると、TabBarの後ろに表示されますが、TabBarの後ろに「フォールバック」します。
つまり、TabBarはUIViewの下部に配置され、NavigationBarはUIViewを押し下げているためです。
ここでは、以前は意味がなかったので、ここにコメントを1つまたは2つ追加します。
UIWebViewがないので、IBで見られるようにすべてをそのままにします。
UIWebViewを使用して、UIWebViewのframe.heightをcontentHeightに増やし、すべてのサブビューを囲む周囲のUIScrollViewの高さを上方に調整します。
まあそこにあります。