Tôi biết rằng sự hiện diện của bộ điều khiển xem nhiều hơn (thanh điều hướng) sẽ đẩy UIView xuống bằng chiều cao của nó. Tôi cũng biết rằng chiều cao này = 44px. Tôi cũng đã phát hiện ra rằng việc đẩy xuống này duy trì [self.view].frame.origin.y = 0
.
Vậy làm cách nào để xác định chiều cao của thanh điều hướng này, ngoài việc chỉ đặt nó thành một hằng số?
Hoặc, phiên bản ngắn hơn, làm cách nào để xác định rằng UIView của tôi đang hiển thị với thanh điều hướng ở trên cùng?
Bóng đèn bắt đầu bật sáng. Thật không may, tôi đã không phát hiện ra một cách thống nhất để khắc phục vấn đề, như được mô tả dưới đây.
Tôi tin rằng toàn bộ vấn đề của tôi tập trung vào nhiệm vụ tự động hóa của tôi. Và lý do tôi đã kết luận rằng có cùng các triệu chứng tồn tại, có hoặc không có UIWebView. Và triệu chứng đó là mọi thứ đều đào hoa cho Portrait. Đối với Cảnh, UIButton dưới cùng bật xuống phía sau TabBar.
Ví dụ: trên một UIView, tôi có, từ trên xuống dưới:
UIView - cả hai lò xo được đặt (trường hợp mặc định) và không có thanh chống
UIScrollView - Nếu tôi đặt hai lò xo và xóa mọi thứ khác (như UIView), thì UIButton xâm nhập vào đối tượng ngay phía trên nó. Nếu tôi xóa tất cả mọi thứ, thì UIButton vẫn ổn, nhưng những thứ ở phía trên cùng ẩn đằng sau StatusBar Chỉ đặt thanh chống trên cùng, UIButton bật xuống phía sau Tab Bar.
UILabel và UIImage tiếp theo theo chiều dọc - bộ thanh chống trên cùng, linh hoạt ở mọi nơi khác
Chỉ cần hoàn thành bức tranh cho một số ít có UIWebView:
UIWebView - Struts: đỉnh, trái, phải Springs: cả hai
UIButton - không có gì được đặt, tức là linh hoạt ở mọi nơi
Mặc dù bóng đèn của tôi mờ, nhưng dường như có hy vọng.
Hãy chịu đựng tôi vì tôi cần nhiều phòng hơn cung cấp cho một bình luận trả lời ngắn.
Cảm ơn vì đã cố gắng hiểu những gì tôi thực sự câu cá ... vì vậy hãy đến đây.
1) Mỗi UIViewContoder (ứng dụng TabBar) có UIImage, một số văn bản và bất cứ thứ gì ở trên đầu. Một mẫu số chung khác là một UIButton ở phía dưới. Trên một số UIViewControllers tôi có UIWebView phía trên UIButton.
Vì vậy, UIImage, văn bản, vv UIWebView (trên MỘT SỐ) UIButton
Bao quanh tất cả những điều trên là một UIScrollView.
2) Đối với những người có UIWebView, autoresizingMask của nó trông giống như:
—
|
—
^
|
|
| - | ← ---- → | - | | | V Mặt nạ của UIButton không có gì được đặt, tức là linh hoạt ở mọi nơi
Trong -viewDidLoad của tôi, tôi gọi các -reposeitionSubView của mình trong đó tôi thực hiện như sau:
Nếu không có UIWebView, tôi không làm gì ngoài việc căn giữa UIButton mà tôi đã đặt với IB.
Nếu tôi có UIWebView, thì tôi xác định chiều cao * nội dung * của nó và đặt khung của nó để bao quanh toàn bộ nội dung.
UIScrollView *scrollViewInsideWebView = [[webView_ subviews] lastObject];
webViewContentHeight = scrollViewInsideWebView.contentSize.height;
[webView_ setFrame:CGRectMake(webViewOriginX, webViewOriginY,
sameWholeViewScrollerWidth, webViewContentHeight)]
Khi tôi làm điều đó, sau đó tôi lập trình đẩy UIButton xuống để nó kết thúc được đặt bên dưới UIWebView.
Mọi thứ đều hoạt động, cho đến khi tôi xoay nó từ Chân dung sang Phong cảnh.
Tôi gọi -reposeitionSubViews trong -didRotateFromInterfaceOrientation của tôi.
Tại sao chiều cao nội dung của UIWebView của tôi không thay đổi khi xoay?.
Từ Chân dung đến Phong cảnh, chiều rộng nội dung sẽ mở rộng và chiều cao nội dung sẽ co lại. Nó trực quan như nó cần, nhưng không theo NSLog của tôi.
Dù sao, có hoặc không có UIWebView, nút tôi đã nói về việc di chuyển bên dưới TabBar khi ở chế độ Phong cảnh nhưng nó sẽ không cuộn lên để nhìn thấy. Tôi thấy nó phía sau TabBar khi tôi cuộn "mạnh mẽ", nhưng sau đó nó "rơi lại" phía sau TabBar.
Điểm mấu chốt, đây là lý do tôi đã hỏi về chiều cao của TabBar và NavigationBar vì TabBar tự đặt ở dưới cùng của UIView và NavigationBar đẩy UIView xuống.
Bây giờ, tôi sẽ thêm một hoặc hai nhận xét ở đây vì chúng sẽ không có ý nghĩa sớm hơn.
Không có UIWebView, tôi để mọi thứ như IB thấy.
Với UIWebView, tôi tăng khung hình của UIWebView về nội dung của nó và cũng điều chỉnh chiều cao của UIScrollView xung quanh bao quanh tất cả các chế độ xem phụ.
Được, bạn đã có nó.