เพื่อน devs ฉันมีปัญหากับ AutoLayout ในตัวสร้างส่วนต่อประสาน (Xcode 5 / iOS 7) มันเป็นพื้นฐานและสำคัญมากดังนั้นฉันคิดว่าทุกคนควรรู้วิธีการทำงานอย่างถูกต้อง หากนี่เป็นข้อผิดพลาดใน Xcode มันเป็นสิ่งที่สำคัญมาก!
ดังนั้นเมื่อใดก็ตามที่ฉันมีลำดับชั้นการดูเช่นนี้ฉันพบปัญหา:
>UIViewController
>> UIView
>>>UIScrollView
>>>>UILabel (or any other comparable UIKit Element)
UIScrollView มีข้อ จำกัด ที่มั่นคงเช่น 50 px จากทุกด้าน (ไม่มีปัญหา) จากนั้นฉันเพิ่มข้อ จำกัด ของ Space Space ลงใน UILabel (ไม่มีปัญหา) (และฉันสามารถปักหมุดความสูง / ความกว้างของฉลากได้โดยไม่ต้องเปลี่ยนอะไรเลย แต่ควรจะไม่จำเป็นเนื่องจากขนาดที่แท้จริงของฉลาก)
ปัญหาเริ่มต้นขึ้นเมื่อฉันเพิ่มข้อ จำกัด ต่อท้ายใน UILabel:
เช่นการลาก Space ไปที่: Superview เท่ากับ: 25
ขณะนี้มีคำเตือนสองคำเกิดขึ้น - และฉันไม่เข้าใจว่าทำไม:
A)ความคลุมเครือขนาดเนื้อหาที่เลื่อนได้ (มุมมองเลื่อนมีความสูง / ความกว้างของเนื้อหาที่เลื่อนไม่ได้)
B)มุมมองที่วางผิดตำแหน่ง (คาดว่าจะมีฉลาก: x = -67 จริง: x = 207
ฉันทำตัวอย่างเล็ก ๆ น้อย ๆ นี้ในโครงการใหม่สดซึ่งคุณสามารถดาวน์โหลดและแนบภาพหน้าจอได้ อย่างที่คุณเห็น Interface Builder คาดว่า Label จะอยู่ด้านนอกขอบเขตของ UIScrollView (สี่เหลี่ยมผืนผ้าสีส้มประสี่เหลี่ยม) การอัปเดตเฟรมของฉลากด้วยเครื่องมือแก้ไขปัญหาย้ายที่นั่น
โปรดทราบ: หากคุณแทนที่ UIScrollView ด้วย UIView พฤติกรรมจะเป็นไปตามที่คาดไว้ (เฟรมของป้ายกำกับนั้นถูกต้องและเป็นไปตามข้อ จำกัด ) ดังนั้นดูเหมือนว่าจะมีปัญหากับ UIScrollView หรือฉันพลาดสิ่งที่สำคัญ
เมื่อฉันเรียกใช้แอพโดยไม่อัปเดตเฟรมของ Label ตามที่ IB แนะนำไว้ก็อยู่ในตำแหน่งที่ดีตรงที่ควรจะเป็นและ UIScrollView สามารถเลื่อนได้ ถ้าฉันทำการปรับปรุงเฟรมป้ายชื่ออยู่นอกสายตาและ UIScrollView ไม่เลื่อน
ช่วยฉันด้วยโอบีวันเคโนบี! ทำไมรูปแบบที่ไม่ชัดเจน? ทำไมมุมมองที่วางผิดตำแหน่ง
คุณสามารถดาวน์โหลดโครงการตัวอย่างได้ที่นี่และลองดูว่าคุณกำลังทำอะไรอยู่: https://github.com/Wirsing84/AutoLayoutProblem
UIScrollView
โดยตรง แทนที่จะใช้UICollectionView
หรือUITableView
ให้มากที่สุดส่วนใหญ่ทุกสิ่งเป็นไปได้ด้วยองค์ประกอบเหล่านี้และยังให้ความเรียบง่ายอ่านง่ายและสามารถนำกลับมาใช้ใหม่ได้ !!!