Saya tahu bahwa kehadiran lebih banyak pengontrol tampilan (bilah navigasi) menekan UIView dengan ketinggiannya. Saya juga tahu bahwa tinggi ini = 44px. Saya juga menemukan bahwa ini menekan mempertahankan [self.view].frame.origin.y = 0
.
Jadi, bagaimana cara menentukan ketinggian bilah navigasi ini, selain hanya mengaturnya ke konstanta?
Atau, versi yang lebih pendek, bagaimana saya menentukan bahwa UIView saya ditampilkan dengan bilah navigasi di atas?
Bola lampu mulai menyala. Sayangnya, saya belum menemukan cara yang seragam untuk memperbaiki masalah, seperti dijelaskan di bawah ini.
Saya percaya bahwa seluruh masalah saya terpusat pada AutoresizingMasks saya. Dan alasan saya menyimpulkan bahwa ada gejala yang sama, dengan atau tanpa UIWebView. Dan gejala itu adalah bahwa segala sesuatu sangat bagus untuk Potret. Untuk Landscape, UIButton paling bawah muncul di belakang TabBar.
Misalnya, pada satu UIView, saya punya, dari atas ke bawah:
UIView - kedua pegas diatur (case default) dan tidak ada struts
UIScrollView - Jika saya mengatur dua pegas, dan menghapus semua yang lain (seperti UIView), maka UIButton mengganggu objek tepat di atasnya. Jika saya menghapus semuanya, maka UIButton OK, tetapi hal-hal di bagian paling atas bersembunyi di balik StatusBar Pengaturan hanya penyangga teratas, UIButton muncul di belakang Tab Bar.
UILabel dan UIImage selanjutnya vertikal - top strut set, fleksibel di mana pun
Hanya untuk melengkapi gambar untuk beberapa yang memiliki UIWebView:
UIWebView - Struts: atas, kiri, kanan Pegas: keduanya
UIButton - tidak ada yang ditetapkan, yaitu fleksibel di mana-mana
Meskipun bola lampu saya redup, tampaknya ada harapan.
Mohon bersabar karena saya membutuhkan lebih banyak ruang daripada yang disediakan untuk komentar balasan singkat.
Terima kasih telah mencoba memahami apa yang sebenarnya saya tangkap ... jadi begini.
1) Setiap UIViewController (aplikasi TabBar) memiliki UIImage, beberapa teks, dan apa pun di atasnya. Penyebut umum lainnya adalah tombol UIB di bagian bawah. Pada beberapa UIViewControllers saya memiliki UIWebView di atas UIButton.
Jadi, UIImage, teks dll. UIWebView (on BEBERAPA) UIButton
Yang mengelilingi semua di atas adalah UIScrollView.
2) Bagi yang memiliki UIWebView, autoresizingMask-nya terlihat seperti:
—
|
—
^
|
|
| - | ← ---- → | - | | | V Topeng UIButton tidak memiliki set, yaitu fleksibel di mana-mana
Di dalam -viewDidLoad saya, saya memanggil -repositionSubViews tempat saya melakukan hal berikut:
Jika tidak ada UIWebView, saya tidak melakukan apa pun kecuali memusatkan UIButton yang saya tempatkan dengan IB.
Jika saya memiliki UIWebView, maka saya menentukan * konten * Tinggi dan mengatur bingkainya untuk melampirkan seluruh konten.
UIScrollView *scrollViewInsideWebView = [[webView_ subviews] lastObject];
webViewContentHeight = scrollViewInsideWebView.contentSize.height;
[webView_ setFrame:CGRectMake(webViewOriginX, webViewOriginY,
sameWholeViewScrollerWidth, webViewContentHeight)]
Setelah saya melakukan itu, maka saya secara pemrograman menekan tombol UIB ke bawah sehingga akhirnya ditempatkan di bawah UIWebView.
Semuanya berfungsi, sampai saya memutarnya dari Portrait ke Landscape.
Saya memanggil -reposisiSubViews saya dalam -didRotateFromInterfaceOrientation.
Mengapa ketinggian konten UIWebView saya tidak berubah dengan rotasi ?.
Dari Portrait ke Landscape, lebar konten harus membesar dan tinggi konten harus menyusut. Secara visual memang sebagaimana mestinya, tetapi tidak menurut NSLog saya.
Lagi pula, dengan atau tanpa UIWebView, tombol yang saya bicarakan bergerak di bawah TabBar ketika dalam mode Lansekap tetapi tidak akan menggulir ke atas untuk dilihat. Saya melihatnya di belakang TabBar ketika saya gulir "penuh semangat", tetapi kemudian "jatuh kembali" di belakang TabBar.
Intinya, yang terakhir ini adalah alasan saya bertanya tentang ketinggian TabBar dan NavigationBar karena TabBar menanam sendiri di bagian bawah UIView dan NavigationBar mendorong UIView ke bawah.
Sekarang, saya akan menambahkan satu atau dua komentar di sini karena mereka tidak akan masuk akal sebelumnya.
Tanpa UIWebView, saya membiarkan semuanya seperti yang terlihat oleh IB.
Dengan UIWebView, saya meningkatkan frame UIWebView. Tinggi ke contentHeight dan juga menyesuaikan ke atas ketinggian UIScrollView sekitarnya yang mengelilingi semua sub-tampilan.
Nah begitulah.