ไม่สามารถปรับขนาด UIView ใน IB


88

อาจเป็นสิ่งที่ง่าย แต่ฉันคิดไม่ออกว่าทำไมฉันไม่สามารถปรับขนาด UIView ใน xib ในตัวสร้างอินเทอร์เฟซ

ฉันสร้าง XIB มุมมองใหม่ใน xcode และในตัวตรวจสอบขนาดความกว้างและความสูงจะถูกปิดใช้งานและทำให้เป็นสีเทาเป็น 320 คูณ 460 สิ่งนี้แปลกเพราะฉันสามารถเปลี่ยนขนาดสำหรับอีกสองมุมมองได้ (เกี่ยวข้องกับแถบแท็บอีกสองอัน รายการ).

ฉันไม่แน่ใจว่ามันเกี่ยวข้องกับอะไร แต่ฉันเพิ่งอัปเดต sdk เป็น 3

ขอบคุณ!

คำตอบ:


81

ฉันคิดว่าคุณไม่สามารถแก้ไขขนาดในขณะที่จำลององค์ประกอบอินเทอร์เฟซผู้ใช้เช่นแถบสถานะในตัวสร้างอินเทอร์เฟซ คุณสามารถลองปิดองค์ประกอบจำลองหากมีการเปิดใช้งาน ไม่แน่ใจว่าทำไมจึงเป็นเช่นนั้นดังนั้นขอขอบคุณข้อเสนอแนะจากทุกคนที่รู้ว่าเหตุใดจึงเป็นเช่นนั้น - ต้องมีเหตุผลที่ดี


1
ขอบคุณที่ถูกต้อง หลังจากที่ฉันอัปเกรด xcode และ IB แถบสถานะจะเปิดตามค่าเริ่มต้น คนอื่น ๆ มีที่ปิด

1
สำหรับ Xcode 4.2 iOS 5.0.1 สิ่งนี้มีการเปลี่ยนแปลง คำตอบของฉันด้านล่างอธิบายว่าสิ่งนี้สามารถทำได้อย่างไร
lol

1
เป็นประโยชน์มาก เพียงแค่ปิดแถบสถานะปรับขนาดแล้วเปิดแถบสถานะอีกครั้ง
Wollan

9
การตั้งค่านี้ใช้ได้กับ ViewController.xib ใน Xcode 4.3.3: "Simulated metrics - Size: freeform" หลังจากนั้นการตั้งค่าขนาดมุมมองจะถูกเปิดใช้งาน ลบมาตราส่วน "โหมดดู" เพื่อเติมตัวเลือก (ด้านล่างเมตริกจำลอง)
defvol

uuuugh ฉันไม่ชอบ IDE นี้จริงๆ
Saik Caskey

80

เพื่อให้บรรลุผลใน XCode 4.6.3 / 5.0.2 คุณต้องทำตามภาพหน้าจอด้านล่าง:

  1. ภายใต้ 'File Inspector' -> ยกเลิกการเลือก Use Auto Layout
  2. คลิกที่ Attributes Selector & Choose Freeformfor Size

สิ่งนี้จำเป็นเมื่อสร้าง headerView สำหรับ tableView

ป้อนคำอธิบายภาพที่นี่


40

ส่วนที่คุณกำลังมองหาอยู่ในแผงการตรวจสอบแรก (Command-1) ที่ด้านบนสุดจะมีส่วนที่มีชื่อว่า Simulated User Interface Elements โดยค่าเริ่มต้นแถบสถานะจะเปิดอยู่ คุณต้องแน่ใจว่าทั้งสามตั้งค่าเป็นไม่มี


2
ขอบคุณคำตอบเหล่านี้ช่วยให้ฉันประหยัดเวลาได้มาก! ใครรู้บ้างว่าทำไม IB ถึงทำแบบนี้?
Gregor

ขอบคุณเพื่อน ฉันกำลังมองหาสิ่งนั้นอยู่
natanavra

โปรดทราบว่าตอนนี้คือ: "ไม่ระบุ" แทนที่จะไม่มีเลย (ฉันมีเวอร์ชัน 3.2.3)
IcyBlueRose

ฉันยืนยันว่า iPad เป็น "ไม่ระบุ" ขอบคุณ Thomas Mon คุณช่วยฉันได้หลายชั่วโมง: D
Qlimax

ฉันเห็นสิ่งนี้สำหรับ View Controllers เท่านั้นไม่ใช่มุมมอง
BigBoy1337

26

เช่นเดียวกับ Xcode 4.2, iOS 5.0.1 เมตริกจำลองเริ่มต้นรวมถึงการจำลองแอตทริบิวต์ "ขนาด" ของ UIViewControllers เป็น "Inferred"

หากคุณเปลี่ยนแอตทริบิวต์นี้เป็น "รูปแบบอิสระ" คุณจะสามารถปรับขนาด UIView ที่อยู่ภายใน UIViewController ได้ในขณะที่จำลองแถบสถานะ (หรือการจำลองอื่น ๆ สำหรับเรื่องนั้น ๆ )


1
ขณะนี้แอตทริบิวต์ขนาดเริ่มต้นเป็น "Retina 4 Full screen" แต่การเปลี่ยนเป็น "Freeform" ยังคงใช้งานได้
Pier-Luc Gendreau

4

เพียงไปที่ตัวตรวจสอบไปที่แผงแรก (หรือกด command-1) จากนั้นเปลี่ยนช่องที่มีเครื่องหมายแถบสถานะแถบด้านบนและแถบด้านล่างเป็นไม่มีภายใต้ส่วนที่เรียกว่า "องค์ประกอบส่วนต่อประสานผู้ใช้จำลอง" คุณอาจต้องคลิกสามเหลี่ยมเล็ก ๆ เพื่อให้มองเห็นได้


1

ตลกฉันมีปัญหาที่คล้ายกัน ฉันได้ลบมุมมองทั้งหมดออกจากไฟล์ xib และเพิ่มมุมมองใหม่ ตั้งค่าแถบสถานะเป็น "ไม่ระบุ" เพื่อไม่ให้แถบสถานะรองรับ เมื่อเพิ่มมุมมองจะถูกสร้างขึ้นด้วย x = 0, y = 0, w = 320 h = 460 แทนที่จะเป็น (0,0,320,480) ตามที่ฉันคาดไว้ หลังจากเปลี่ยนความสูงเป็น 480 แล้วเชื่อมต่อกับเจ้าของไฟล์และเปลี่ยนสีเพื่อให้มีความโดดเด่นโดยสัมพันธ์กับพื้นหลัง ฉันเชื่อว่ามีแถบสีขาวอยู่ระหว่างด้านบนของหน้าจอและมุมมอง ฉันเพิ่มรหัสของฉันด้วย:

#define RECTLOG (rect) (NSLog (@ "" #rect @ "x:% fy:% fw:% fh:% f", rect.origin.x, rect.origin.y, rect.size.width, rect .size.height));

ภายใน viewDidLoad

- (โมฆะ) viewDidLoad {
    [super viewDidLoad];
    RECTLOG (self.view.frame);
}

ปรากฎว่ามุมมองนั้นโหลดจาก IB เป็นจริง (0, 20, 320, 480) ในการแก้ไขปัญหาฉันรีเซ็ตเฟรมของมุมมองด้วย self.view.frame = CGRectMake (0, 0, 320, 480);

ฉันใช้ IB 3.2.5

ฉันอยากทราบวิธีแก้ไขเล็กน้อยสำหรับสิ่งนี้


3
FYI คุณสามารถใช้ NSStringFromCGRect (rect) เพื่อรับสตริงที่พิมพ์ได้ซึ่งแสดงถึง CGRect
Berry

นั่นเป็น FYI ที่ยอดเยี่ยมฉันลองดูแล้วคุณสามารถรับค่าสตริงจาก CGPoint และ CGSize ได้เช่นกัน! ทำอาหารมากขอบคุณ
FierceMonkey

1

ฉันสังเกตเห็นว่า UIView สร้างขึ้นโดยอัตโนมัติเมื่อสร้างไฟล์ xib ไม่สามารถปรับขนาดจากแผงการปรับขนาดหรือที่จับขอบได้

สิ่งที่ฉันทำคือเพิ่ม UIView อื่นและลากทุกอย่างจาก UIView เก่าไปยังอันใหม่จากนั้นลบอันเก่า

มันช่วยแก้ปัญหาให้ฉันได้ แต่ใช่ฉันคิดว่ามีปัญหาพื้นฐานเกี่ยวกับตัวสร้างอินเทอร์เฟซสำหรับ Apple เพื่อแก้ไข (มีใครแก้ไขฉันได้ถ้าฉันผิด)

ฉันใช้ตัวสร้างอินเทอร์เฟซแบบรวม XCode 4


0

ฉันแยกมันออกไปในทางที่แตกต่างออกไป ...

เปิด xib ของคุณด้วยโปรแกรมแก้ไขข้อความที่คุณชื่นชอบและแก้ไขบรรทัดนี้

        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CompassViewController">

CompassViewController คือชื่อคลาสของคุณที่คุณพยายามจะเชื่อมโยง nib / xib ของคุณด้วย

เพียงแก้ไขชื่อคลาสของคุณด้วยชื่อคลาสที่ถูกต้องเท่านี้ก็เสร็จแล้ว;)


0

ป้อนคำอธิบายภาพที่นี่ในกระดานเรื่องราวให้เลือก UIVIew และไปที่ตัวตรวจสอบแอตทริบิวต์เปลี่ยนขนาด UIVIew เป็น "FreeForm" แทน "Inferred"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.