UIView เปลี่ยนความกว้างหลังจากเปลี่ยนการวางแนวเป็นแนวนอนหรือไม่

ฉันได้รับ UIView พร้อม 2 มุมมองย่อย UIView ถูกตั้งค่าเป็น UIViewAutoresizingFlexibleWidth ตอนนี้เมื่อมันเข้าสู่เลย์เอาต์ Subviews มันจะปรับขนาดเฟรมของมุมมองย่อยที่สัมพันธ์กับ UIView ดังนี้:

rect.size.width  = self.frame.size.width - rect.origin.x - textLabel.frame.origin.x;

แต่ปัญหาเกิดขึ้นในโหมดแนวนอนทำให้ในโหมดแนวตั้ง self.frame.size.width (และขอบเขตสำหรับเรื่องนั้น) ตอบสนอง 768 เมื่อเริ่มต้นและ 788 หลังจากหมุนเสร็จแล้ว หมายความว่าเมื่อมันหมุนดูเหมือนว่าจะเพิ่ม 20pixels ซึ่งฉันคิดว่าเป็นแถบสถานะ

เมื่อฉันฮาร์ดโค้ด 768 ทุกอย่างทำงานได้ตามที่คาดไว้ แต่ฉันไม่ต้องการสิ่งนั้นแน่นอน ฉันสามารถเก็บสถานะเริ่มต้นไว้ใน var และใช้สิ่งนั้นได้ แต่ฉันไม่คิดว่านั่นเป็นวิธีที่ถูกต้องในการทำ

ใครมีวิธีแก้ปัญหา?


person Mark    schedule 16.11.2010    source แหล่งที่มา


คำตอบ (1)


ทักทาย,

ในใบสมัครของฉันฉันประสบปัญหาเดียวกัน เพื่อแก้ปัญหานี้ ฉันเพียงแค่ใช้ didRotateFromInterfaceOrientation:method เพื่อปรับขนาดมุมมองเมื่อหมุนอุปกรณ์

self.view.frame = CGRectMake(0,0,self.view.bounds.size.width,self.view.bounds.size.height);

หวังว่านี่จะช่วยได้

person Sniffer    schedule 16.11.2010