ผมไม่เข้าใจว่าทำไมทุกคนจะบ่นว่า " ขอบจะทำให้เกิดความผิดพลาดในสิ่งที่ตรงไปตรงมาก่อนที่จะมี iOS 8. "
การตั้งข้อ จำกัด ของคุณที่สัมพันธ์กับระยะขอบในไฟล์ xib หรือกระดานเรื่องราวจะไม่ทำให้แอปของคุณทำงานผิดพลาดบน iOS7 และจะไม่สร้างความแตกต่าง UI บนอุปกรณ์ iOS7 ของคุณตราบใดที่คุณไม่ได้สัมผัสUIView.layoutMargins
และUIView.preservesSuperviewLayoutMargins
คุณสมบัติในรหัสของคุณ
มาร์จิ้นใน iOS8 คืออะไร
ระยะขอบของเลย์เอาต์แสดงถึงการขยายรอบ ๆภายในของUIView
ระบบโครงร่างที่สามารถใช้เมื่อจัดวางการดูย่อย - เพื่อให้แน่ใจว่ามีช่องว่างเหลือระหว่างขอบของมุมมองและมุมมองย่อย ในแง่นี้มันเป็นเหมือนคุณสมบัติการขยายที่เกี่ยวข้องกับบล็อกใน CSS
โดยค่าเริ่มต้นUIView
มีอัตรากำไรขั้นต้นรูปแบบของ 8 จุดในแต่ละด้านและนี้ไม่สามารถเปลี่ยนแปลงได้ในInterface Builder อย่างไรก็ตามโดยการตั้งค่าUIView.layoutMargins
คุณสมบัติในรหัสซึ่งมีเฉพาะใน iOS8 คุณจะสามารถปรับค่าเหล่านี้ได้
คุณสามารถรับ IB เพื่อแสดงระยะขอบด้วยEditor> Canvas> Show Rectangles สี่เหลี่ยมผืนผ้า:
ระยะขอบสามารถใช้เพื่อช่วยจัดวางมุมมองและมุมมองย่อยของคุณ ทุกครั้งUIView
จะมีมาร์จิ้นตามค่าเริ่มต้น แต่จะมีผลกับตำแหน่งการดูเมื่อคุณตั้งค่าข้อ จำกัด ที่เกี่ยวข้องกับระยะขอบเท่านั้น
วิธีใช้มาร์จิ้น
วิธีเดียวที่จะใช้ระยะขอบในตัวสร้างอินเทอร์เฟซคือการตรวจสอบตัวเลือกสัมพันธ์กับระยะขอบขณะกำหนดค่าข้อ จำกัด ของคุณ นี่คือวิธีที่คุณกำหนดข้อ จำกัด ของคุณไปที่ใช้ระยะขอบแทนที่จะเป็นขอบเมื่อวางมุมมองของฉัน
ลองมาดูสี่วิธีที่แตกต่างกันในการตั้งค่าข้อ จำกัด ชั้นนำระหว่างมุมมองและมุมมองย่อย สำหรับแต่ละ จำกัด เราตรวจสอบสมาคมครั้งแรกจะเป็น subview ชั้นนำและสองจะเป็นชั้นนำของ SuperView สิ่งที่คุณต้องการใส่ใจอย่างยิ่งคือการตรวจสอบและยกเลิกการเลือกสถานะของตัวเลือกสัมพันธ์กับระยะขอบของแต่ละจุดสิ้นสุดของข้อ จำกัด เนื่องจากจะกำหนดว่าข้อ จำกัด นั้นเชื่อมโยงกับระยะขอบหรือขอบของมุมมองหรือไม่
- รายการแรก (ไม่เลือก) รายการที่สอง (ตรวจสอบ): ในกรณีนี้เราขอประกาศว่าขอบซ้ายของมุมมองย่อยควรจัดชิดขอบด้านซ้ายของ superview (ดังที่แสดงในภาพนี้)
- รายการแรก (ยกเลิก) รายการที่สอง (ยกเลิก): ทั้งสองโดยใช้ขอบไม่ขอบ ในกรณีนี้เราจะประกาศว่าขอบซ้ายของมุมมองย่อยควรจัดชิดขอบด้านซ้ายของ superview
- รายการแรก (ตรวจสอบ) รายการที่สอง (ไม่เลือก): ในกรณีนี้เราขอประกาศว่าขอบซ้ายของมุมมองย่อยควรจัดชิดขอบซ้ายของ superview เลย์เอาต์ชนิดนี้ทำให้มุมมองย่อยซ้อนทับ superview
- รายการแรก (ตรวจสอบ) รายการที่สอง (ตรวจสอบ) สิ่งนี้มีผลเช่นเดียวกับกรณีที่ 2 เนื่องจากทั้งมุมมองย่อยและ superview มีระยะขอบเริ่มต้นเท่ากัน เรากำลังประกาศว่าระยะขอบซ้ายของมุมมองย่อยควรจัดชิดขอบด้านซ้ายของ superview
อะไรคือสิ่งที่ดีเกี่ยวกับมาร์จิ้น
คุณสมบัติใหม่นี้ (iOS8) ส่งผลกระทบต่อการพัฒนา UI เท่านั้นหากคุณตัดสินใจใช้ระยะขอบ
ด้วยการใช้ระยะขอบคุณสามารถปรับตำแหน่งของการชมย่อยหลายครั้งที่แชร์ความสัมพันธ์ทั่วไปกับผู้ดูแลร่วมที่แบ่งปันโดยการเปลี่ยนค่าของพร็อพเพอร์ตี้เดียว นี่คือการชนะอย่างชัดเจนในการตั้งค่าข้อ จำกัด ที่เกี่ยวข้องทั้งหมดด้วยค่าคงที่เพราะถ้าคุณต้องการอัปเดตระยะห่างทั้งหมดแทนที่จะเปลี่ยนค่าทีละหนึ่งคุณสามารถปรับเปลี่ยนตำแหน่งที่เกี่ยวข้องทั้งหมดได้พร้อมกันโดยอัปเดตขอบของ superview ด้วยบรรทัดเดียว รหัสเช่นนี้:
self.rootView.layoutMargins = UIEdgeInsetsMake(0, 50, 0, 0);
เพื่อแสดงให้เห็นถึงประโยชน์นี้ในกรณีต่อไปนี้ขอบด้านซ้ายของการดูทั้งหมดจะจัดชิดขอบด้านซ้ายของผู้ดูแล ดังนั้นการเปลี่ยนระยะขอบด้านซ้ายของ superview จะส่งผลกระทบต่อการดูย่อยทั้งหมดในเวลาเดียวกัน