CGRect cgRect1 = [[UIScreen mainScreen] applicationFrame];
UISearchBar *mySearchBar = [[UISearchBar alloc]
initWithFrame:CGRectMake(0, 0, cgRect.size.width, 40)];
mySearchBar.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight ;
UITableView *myTableView = [[UITableView alloc]
initWithFrame:CGRectMake(0, 40, cgRect.size.width, cgRect.size.height-40)];
myTableView.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
[self.view addSubview:mySearchBar];
[self.view addSubview:myTableView];
ในเวอร์ชันก่อนหน้านี้ทำงานได้อย่างถูกต้อง แถบค้นหาปรากฏด้านล่างstatusbar
และแถบนำทาง tableview
ปรากฏด้านล่างแถบค้นหา
แต่เมื่อฉันเปิดใช้งานXcode 5 sdk iOS 7
แถบค้นหาจะไม่ปรากฏให้เห็น (ฉันคิดว่ามันวางอยู่ใต้แถบสถานะและแถบนำทาง) และแถบนำทางก็ปรากฏเหนือมุมมองตารางด้วย
จะได้รับการแก้ไขด้วยการiOS 7
ปล่อยที่เสถียรหรือไม่?
หรือเป็นปัญหาของการเข้ารหัสของฉัน?
หรือเราควรจัดการโดยเพิ่ม(y = statubar height + nav bar height)
ค่าy เพื่อiOS 7
?
ฉันเพิ่งดาวน์โหลด Xcode 5 DP เพื่อทดสอบแอปของฉันใน iOS 7 สิ่งแรกที่ฉันสังเกตเห็นและยืนยันคือขอบเขตของมุมมองของฉันไม่ได้ถูกปรับขนาดให้สอดคล้องกับแถบสถานะและแถบนำทางเสมอไป
ใน viewDidLayoutSubviews ฉันพิมพ์ขอบเขตของมุมมอง:
{{0, 0}, {320, 568}}
ส่งผลให้เนื้อหาของฉันปรากฏใต้แถบนำทางและแถบสถานะ
ฉันรู้ว่าฉันสามารถคำนวณความสูงได้ด้วยตัวเองโดยรับความสูงของหน้าจอหลักลบความสูงของแถบสถานะและความสูงของแถบนำทาง แต่ดูเหมือนว่าจะเป็นงานพิเศษที่ไม่จำเป็น
มีใครประสบปัญหานี้อีกบ้าง?
UPDATE:
ฉันพบวิธีแก้ปัญหาเฉพาะนี้แล้ว ตั้งค่าคุณสมบัติโปร่งแสงของแถบนำทางเป็น NO:
self.navigationController.navigationBar.translucent = NO;
การดำเนินการนี้จะแก้ไขมุมมองไม่ให้อยู่ในกรอบใต้แถบนำทางและแถบสถานะ
อย่างไรก็ตามฉันไม่พบวิธีแก้ไขในกรณีที่คุณต้องการให้แถบนำทางโปร่งแสง ตัวอย่างเช่นการดูภาพถ่ายแบบเต็มหน้าจอฉันต้องการให้แถบนำทางโปร่งแสงและมุมมองที่จะอยู่ด้านล่าง ใช้งานได้ แต่เมื่อฉันสลับการแสดง / ซ่อนแถบนำทางฉันก็พบกับผลลัพธ์ที่แปลกประหลาด มุมมองย่อยแรก (a UIScrollView
) ได้รับขอบเขต y จุดเริ่มต้นเปลี่ยนแปลงทุกครั้ง