UIScrollView และ Autolayout ป้องกันการบีบอัด contentview

ใน IB ฉันมีตัวควบคุมมุมมองที่มี scrollview

มุมมองสีแดงอยู่ภายใน scrollview

ความสูงขั้นต่ำของมุมมองสีแดงคือ 504px ดังนั้นบน iPhone 4 ควรเลื่อน และบน iPhone >=5 ควรขยายและจัดวางปุ่มเพื่อเติมช่องว่าง

ฉันตั้งค่าข้อจำกัดของมุมมองสีแดงเป็น 0 จากด้านบน นำ ท้าย และด้านล่างของ scrollview และยังจัดกึ่งกลางแนวนอนและแนวตั้งด้วย Redview ของฉันมีความสูงไม่ต่ำกว่า 504

มุมมองสีน้ำเงินและสีเขียวมีความสูงเท่ากัน

ทุกอย่างปกติดีสำหรับ iphone >=5 แต่สำหรับ iphone 4 มุมมองสีแดงจะถูกบีบอัดให้เท่ากับขนาดของมุมมองเลื่อนและปุ่มต่างๆ จะสัมผัสกัน

หลังจากปรับข้อจำกัดหลายครั้ง ฉันสงสัยว่าเป็นไปได้ไหมที่จะทำสิ่งที่ฉันต้องการ 100% ใน IB ด้วยการวางอัตโนมัติ

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

iphone 4 !OK

iphone 6 ตกลง


person Mathieu    schedule 11.02.2015    source แหล่งที่มา


คำตอบ (1)


คุณพูด (เน้นของฉัน :)

"ฉันตั้งค่าข้อจำกัดของมุมมองสีแดงเป็น 0 จากด้านบน นำ ท้าย และด้านล่างของ scrollview และยังจัดกึ่งกลางแนวนอนและแนวตั้งด้วย Redview ของฉันมีความสูงขั้นต่ำ 504"

อันดับแรก ฉันเห็นความซ้ำซ้อน (ส่วนที่เป็นตัวหนา) redView ของคุณไม่ต้องการข้อจำกัดในแนวตั้ง เนื่องจากคุณได้ปักหมุดมันไว้ที่ขอบของ scrollview แล้ว และมีความสูงขั้นต่ำที่กำหนดไว้

แต่นี่อาจเป็นสาเหตุของการที่ปุ่มเข้าใกล้กันมากขึ้นหรือไม่ ขึ้นอยู่กับข้อจำกัดที่เหลือ

คุณได้กำหนดข้อจำกัดพื้นที่แนวตั้งสำหรับปุ่มต่างๆ แล้วหรือยัง?

person joakim    schedule 11.02.2015
comment
ฉันได้ตั้งค่าข้อจำกัดพื้นที่แนวตั้งสำหรับมุมมองสีน้ำเงินแล้ว (ความสูงขั้นต่ำ 12px) และปุ่มต่างๆ มีข้อจำกัดความสูง 60px และด้านบนและด้านล่าง 0px จากมุมมองสีน้ำเงิน - person Mathieu; 11.02.2015
comment
การลบการจัดกึ่งกลางแนวตั้งของ redview และ scroll view ทำให้ฉันได้ผลลัพธ์ที่ฉันต้องการบน iphone 4 แต่บน iphone > 5 redview จะไม่ขยายไปที่ด้านล่างของ scrollview - person Mathieu; 11.02.2015
comment
ในสถานการณ์ที่คล้ายกันเมื่อเร็วๆ นี้ ฉันเลือกที่จะทำให้ redView เป็นมุมมองพื้นหลัง คุณได้พิจารณาตัวเลือกนั้นแล้วหรือยัง? สิ่งที่ฉันหมายถึงคือคุณสามารถลองวาง redView ไว้ด้านนอกและด้านหลังมุมมองเลื่อน (เหนือ scrollView ในมุมมองลำดับชั้นของ IB) สิ่งต่างๆ จะง่ายต่อการควบคุม/ปฏิบัติตามด้วยวิธีนี้ - person joakim; 11.02.2015
comment
หรือคุณสามารถใช้ลำดับความสำคัญที่แตกต่างกันสำหรับข้อจำกัดของคุณ โดยขึ้นอยู่กับลำดับความสำคัญที่คุณต้องการได้รับชัยชนะในสถานการณ์ที่มีการแก้ไขข้อขัดแย้ง - person joakim; 11.02.2015