ฉันใช้เวลาสองวันในการลองวิธีแก้ปัญหาต่าง ๆ สำหรับวิธีผสมและ Pure Autolayoutเพื่อให้ได้สิ่งที่เป็นการตั้งค่า scrollview เล็กน้อยก่อนการ autolayout และตอนนี้เป็นทางการ - ฉันต้องโง่เกินไป ฉันกำลังตั้งค่านี้ส่วนใหญ่ใน Storyboard (ก็เป็นแบบที่มันเป็น)
ดังนั้นนี่คือข้ออ้างของฉันเพื่อขอความช่วยเหลือ
Viewtree:
UIView
-UIView
-UIView
..-UIScrollview
...-UIButton
...-UIButton
...-UIButton
ปุ่มควรเลื่อนในแนวนอน (ซ้ายไปขวาและกลับกัน) ใครช่วยกรุณาแจ้งให้เราทราบวิธีการตั้งข้อ จำกัด เพื่อให้บรรลุนี้โดยใช้ Autolayout บริสุทธิ์ ???
-
ฉันได้ลองใช้วิธีผสมเช่น:
UIView
- UIView
- UIView
..-UIScrollview
...-UIView (contentview)
....-UIButton
....-UIButton
....-UIButton
... และการตั้งค่าข้อ จำกัด ความกว้างและความสูงคงที่สำหรับcontentview
และการtranslatesAutoresizingMaskIntoConstraints
ตั้งค่าตาม TechNote ของ Apple ปุ่มและ scrollview ถูกตั้งค่าโดยใช้ข้อ จำกัด สิ่งนี้ทำให้ scrollview scrolling (ใช่) แต่อนิจจามันเลื่อนไปไกลเกินไป! เท่าที่ฉันสามารถบอกได้ความกว้างของการเลื่อนจะเพิ่มขึ้นเป็นสองเท่าจากสิ่งที่ฉันตั้งค่า contentview ที่ ??? !!! ???
ฉันลองใช้วิธี autolayout ที่บริสุทธิ์เช่นกันทั้งที่มีcontentview
และไม่มี ทุกมุมมองที่ยกเว้นtranslatesAutoresizingMaskIntoConstraints=NO
self.view
ปุ่มเหล่านี้มีข้อ จำกัด ด้านความกว้าง / ความสูงคงที่และถูกตรึงไว้ที่ขอบทั้งสี่ของ scrollview ไม่มีอะไรเลื่อน
ดังนั้นฉันงงงันโดยสิ้นเชิงว่าทำไมฉันไม่สามารถทำงานได้อย่างถูกต้อง ความช่วยเหลือใด ๆ ที่นิยมมากและหากคุณต้องการข้อมูลอื่น ๆ โปรดถาม!
อัปเดตภาพหน้าจอพร้อมโซลูชัน - ข้อ จำกัด buttonZ:
EDIT @ Jamie Forrest ดังนั้นการแก้ไขจึงกลายเป็นข้อ จำกัด การลากที่ไม่ถูกต้องในปุ่มสุดท้าย แทนที่จะเป็น 6441 ค่าที่ฉันตั้งไว้เป็นค่าลบ -6441 สิ่งที่ยุ่งยากคือเมื่อตั้งค่าในกระดานเรื่องราวมีสองตัวเลือกในแถบเครื่องมือ Pin:
มูลค่า Canvas ปัจจุบันเป็นค่าลบ (นำไปสู่ไม่มีการเลื่อน) และตัวเลือกด้านล่างเป็นค่าบวก (เปิดใช้งานการเลื่อน) นี่หมายความว่าฉันไม่ได้โง่ แต่อย่างน้อยฉันก็เดาครึ่ง แม้ว่าการป้องกันของฉันมันจะค่อนข้างรบกวนที่ XCode ไม่แสดงข้อผิดพลาดสำหรับการตั้งค่า "ไม่ถูกต้อง"?
แก้ไขอีกครั้ง ตอนนี้เป็นเรื่องตลก ... การเปลี่ยนค่าการต่อท้ายจาก -6441 (ไม่มีการเลื่อน) เป็นการเลื่อนที่เปิดใช้งาน 6441 แต่เพื่อนเก่าของฉัน "เนื้อหาที่มากเกินไป" กลับมานำไปสู่ขนาดเนื้อหาใหญ่เป็นสองเท่าของสิ่งที่ควรจะเป็น! วิธีแก้ปัญหาในการเลื่อนเนื้อหาที่ถูกต้องคือการตั้งค่าข้อ จำกัด ต่อท้ายเป็น ZERO! สิ่งนี้ไม่ชัดเจนเมื่อทำงานในสตอรีบอร์ด แต่เมื่อดูที่รหัส @Infinity James มันเป็นสิ่งที่ควรเป็น
contentSize
การUIScrollView
ใช้เลย์เอาต์อัตโนมัติเท่านั้น และมันคือสิ่งcontentSize
ที่กำหนดว่าคุณสามารถเลื่อนได้มากแค่ไหน ดังนั้นคุณจะต้องตั้งค่านี้ด้วยตนเองที่ไหนสักแห่งในที่สุด สำหรับส่วนที่เหลือคุณสามารถใช้ข้อ จำกัด โครงร่างเพื่อตั้งค่ามุมมองเฟรมสัมพันธ์กัน