Daha fazla görüntüleme denetleyicisinin (gezinme çubuğu) varlığının, UIView'ı yüksekliği ile aşağıya ittiğini biliyorum. Ayrıca bu yüksekliğin 44px olduğunu da biliyorum. Ayrıca, bu aşağı itmenin [self.view].frame.origin.y = 0
.
Öyleyse, bu gezinme çubuğunun yüksekliğini sabit olarak ayarlamak dışında nasıl belirleyebilirim?
Veya, daha kısa sürüm, UIView'umun üstte gezinme çubuğu ile gösterildiğini nasıl belirleyebilirim?
Ampul yanmaya başladı. Maalesef, aşağıda açıklandığı gibi sorunu düzeltmenin tek tip bir yolunu bulamadım.
Tüm sorunumun otomatik yeniden boyutlandırma maskelerime odaklandığını düşünüyorum. Ve UIWebView ile veya onsuz aynı semptomların var olduğu sonucuna varmamın nedeni. Ve bu belirti, Portre için her şeyin şeftali gibi olmasıdır. Yatay için, en alttaki UIButton, TabBar'ın arkasında açılır.
Örneğin, bir UIView'de yukarıdan aşağıya:
UIView - her iki yay da ayarlanmış (varsayılan durum) ve destek yok
UIScrollView - İki yayı ayarlarsam ve diğer her şeyi temizlersem (UIView gibi), UIButton hemen üstündeki nesneye girer. Her şeyi temizlersem, UIButton tamamdır, ancak en üstteki şeyler StatusBar Ayarının arkasına gizlenir, sadece üst dikme, UIButton Sekme Çubuğunun arkasına açılır.
Sıradaki UILabel ve UIImage dikey olarak - üst destek seti, her yerde esnek
Sadece UIWebView olan birkaç kişi için resmi tamamlamak için:
UIWebView - Dikmeler: üst, sol, sağ Yaylar: ikisi de
UIButton - hiçbir şey ayarlanmadı, yani her yerde esnek
Ampulüm sönük olsa da umut var gibi görünüyor.
Lütfen bana katlanın çünkü kısa bir cevap yorumu için sağlanandan daha fazla alana ihtiyacım vardı.
Gerçekten ne için balık tuttuğumu anlamaya çalıştığın için teşekkürler ... işte burada.
1) Her UIViewController (bir TabBar uygulaması) bir UIImage, bir miktar metin ve üstte ne varsa içerir. Diğer bir ortak payda, alttaki UIB düğmesidir. Bazı UIViewControllers üzerinde UIButton üzerinde bir UIWebView var.
Yani, UIImage, metin vb. UIWebView (BAZILARI üzerinde) UIB düğmesi
Yukarıdakilerin tümünü çevreleyen bir UIScrollView'dur.
2) UIWebView'a sahip olanlar için, autoresizingMask şöyle görünür:
—
|
—
^
|
|
| - | ← ---- → | - | | | V UIButton'un maskesinde hiçbir şey ayarlanmamış, yani her yerde esnek
-ViewDidLoad'um içinde, içinde aşağıdakileri yaptığım -repositionSubViews adını veriyorum:
UIWebView yoksa, IB'ye yerleştirdiğim UIButton'u ortalamak dışında hiçbir şey yapmam.
Bir UIWebView'a sahipsem, * içerik * Yüksekliğini belirlerim ve çerçevesini tüm içeriği kapsayacak şekilde ayarlarım.
UIScrollView *scrollViewInsideWebView = [[webView_ subviews] lastObject];
webViewContentHeight = scrollViewInsideWebView.contentSize.height;
[webView_ setFrame:CGRectMake(webViewOriginX, webViewOriginY,
sameWholeViewScrollerWidth, webViewContentHeight)]
Bunu yaptıktan sonra, UIButton'u programlı olarak aşağı iterek UIWebView'in altına yerleştirilmesini sağlarım.
Dikeyden Yatay'a döndürene kadar her şey çalışıyor.
-DidRotateFromInterfaceOrientation içinde -repositionSubViews adını veriyorum.
UIWebView'umun içerik yüksekliği neden rotasyonla değişmiyor ?.
Dikeyden Yatay'a, içerik genişliği genişlemeli ve içerik yüksekliği küçülmelidir. Olması gerektiği gibi görsel olarak çalışıyor, ancak NSLog'uma göre değil.
Her neyse, bir UIWebView olsun veya olmasın, bahsettiğim düğme Yatay moddayken TabBar'ın altına hareket ediyor, ancak görülmek için yukarı kaydırılmayacak. "Şiddetle" kaydırdığımda TabBar'ın arkasında görüyorum ama sonra TabBar'ın arkasına "geri dönüyor".
Sonuç olarak, bu sonuncusu TabBar ve NavigationBar'ın yüksekliğini sormamın nedenidir çünkü TabBar kendisini UIView'ın altına yerleştirir ve NavigationBar UIView'ı aşağı iter.
Şimdi, buraya bir veya iki yorum ekleyeceğim çünkü daha önce mantıklı olmazlardı.
UIWebView olmadan, her şeyi IB tarafından görüldüğü gibi bırakıyorum.
Bir UIWebView ile, UIWebView'ün frame.height'ını contentHeight'a yükseltiyorum ve ayrıca tüm alt görünümleri çevreleyen çevreleyen UIScrollView'ın yüksekliğini yukarı doğru ayarlıyorum.
İşte orada var.