การจัดวางอัตโนมัติ: เพิ่มข้อ จำกัด ให้กับ superview และไม่ใช่ Top Layout Guide?


112

ฉันมี UIView ใน UIViewController ในสตอรี่บอร์ดซึ่งฉันต้องการเพิ่มข้อ จำกัด ให้กับพื้นที่ที่มองเห็นระยะทางจากขอบด้านบน

ตอนนี้เมื่อฉันทำตามปกติโดย ctrl + ลากไปที่มุมมองหลักของ ViewController ฉันจะได้รับตัวเลือกเพื่อตั้งค่าเป็นคำแนะนำเค้าโครงด้านบนเท่านั้น

นี่เป็นปัญหาสำหรับฉันเพราะเมื่อถึงจุดหนึ่งในแอปฉันจะย้ายมุมมองหลักขึ้นประมาณ 20-50px และสิ่งที่เกิดขึ้นคือมุมมองนั้นฉันจะไม่ขยับ ... เพราะมันไม่สอดคล้องกับ superview

ฉันจะทำสิ่งนี้ด้วยตนเองในสตอรีบอร์ดได้อย่างไรหรือต้องเพิ่มแบบเป็นโปรแกรม?

ฉันใช้ xcode 6


คุณสามารถลากและวางไปยังเอนทิตีที่ถูกต้องในโครงร่างเอกสารทางด้านซ้ายได้หรือไม่? - วัตถุฉากในภาพหน้าจอนี้: ptgmedia.pearsoncmg.com/images/chap5_9780672335761/elementLinks/…
Woodstock

ฉันได้ลองเช่นกันผลลัพธ์เดียวกัน
Arbitur

คำตอบ:


306

มีลูกศรอยู่ทางขวาของค่าคงที่ของข้อ จำกัด หากคุณคลิกเมนูจะปรากฏขึ้นเพื่อให้คุณสามารถเลือกสิ่งที่คุณต้องการทำให้ข้อ จำกัด สัมพันธ์กับ หากคุณเลือก "ดู" กว่าที่จะตรึงไว้ที่ด้านบนสุดของมุมมอง

ใส่คำอธิบายภาพที่นี่


6
Hallelujah! ฉันไม่รู้ว่าฉันจะทำอะไรเมื่อพวกเขาลบเมนู Editor -> Pin
Jeremy Hicks

4
ไม่อยากจะเชื่อเลยว่าฉันไม่เคยเห็นมาก่อน น่ากลัว
zumzum

9
เพียงแค่หมายเหตุสำหรับคนที่ไม่รู้เท่าฉัน -> คุณอาจไม่สามารถทำการเปลี่ยนแปลงนี้ได้เว้นแต่มุมมองที่คุณกำลังเพิ่มข้อ จำกัด จะอยู่ด้านล่างคำแนะนำการจัดวางด้านบน ฉันมีมุมมองเหนือคำแนะนำการจัดวางด้านบนและ "คำแนะนำการจัดวางด้านบน" ไม่ใช่ตัวเลือกในเมนูแบบเลื่อนลง ซึ่งน่าจะเป็นคำสั่ง "duh" สำหรับคนที่ไม่ใช่มือใหม่อย่างฉัน :)
Ryan James

2
มันเกี่ยวกับรายละเอียดปลีกย่อย Xcode ขนาดเล็กเหล่านั้น ที่ทำมาก :)
มีนาคม

เพียงแค่คำชี้แจงสั้น ๆ ที่ทำให้ฉันสับสน: แม้ว่าภาพจะมีเครื่องหมายคำแนะนำการออกแบบยอดนิยม แต่หากคุณต้องการตรึงมุมมองไว้ที่ด้านบนสุดของมุมมองเช่นเดียวกับด้านบนสุดของอุปกรณ์จากนั้นเลือก "ดู"
micnguyen

57

คุณควรทำได้โดยไฮไลต์มุมมองที่คุณต้องการในกระดานเรื่องราวจากนั้นเลือกEditor > Pin > Top Space to Superviewในเมนูด้านบน


สิ่งนี้ล้าสมัยใน XCode 7 ดูคำตอบของ @ PaulGurov แทน


ทำงานได้อย่างมีเสน่ห์ - XCode 6.3
NKorotkov

4
พวกเขาได้ลบ 'พิน' ออกจากเมนูแก้ไขใน Xcode 7 วิธีแก้ปัญหาใหม่ ๆ หรือไม่?
Kyle G

14

TL; DR: คุณสามารถ จำกัด ระยะขอบได้โดยกดปุ่มAltบนแป้นพิมพ์


นอกจากนี้คุณยังสามารถเพิ่มได้ว่าหากมุมมองที่คุณพยายามตรึงไม่ใช่มุมมองย่อยโดยตรงของมุมมองที่คุณต้องการตรึงแนวทางที่แนะนำจะไม่ถูกต้องจริงๆ สมมติว่าลำดับชั้นของมุมมองมีลักษณะเช่นนั้นและคุณต้องการตรึงมุมมองภาพ ( Parallax Image Viewในกรณีนี้) ไว้ที่มุมมองของตัวควบคุมมุมมอง ( Viewในกรณีนี้)

ใส่คำอธิบายภาพที่นี่

ในการทำเช่นนั้นให้คุณControl+ DragจากจุดParallax Image ViewถึงView. ซึ่งจะแสดงตัวเลือกเริ่มต้นที่คุณสามารถดูVertical Spacing to Top Layout Guideเพื่อตรึงParallax Image Viewไว้ที่คำแนะนำเค้าโครงด้านบน

ใส่คำอธิบายภาพที่นี่

สิ่งที่คุณต้องการคือตรึงไว้ที่ด้านบนสุด (ระยะขอบ) ของมุมมอง ในการทำเช่นนั้นคุณต้องเปลี่ยนไปใช้ชุดข้อ จำกัด อื่น ๆ โดยการกดAlt

ใส่คำอธิบายภาพที่นี่


เคล็ดลับที่มีประโยชน์มาก สิ่งนี้ช่วยแก้ปัญหาของฉันได้จริง
Machado

มันใช้ได้สำหรับฉัน แต่ฉันไม่รู้วิธีเพิ่มข้อ จำกัด หลายข้อในเวลาเดียวกัน ตอนนี้ต้องเพิ่มทีละตัวต้องใช้เวลา
Duc Nguyen

3

ฉันมีข้อ จำกัด มากมายอยู่ที่นั่นแล้วและฉันแค่อยากจะเปลี่ยนมันมากกว่าที่จะทำลายมัน ปรากฎว่าหากคุณดับเบิลคลิกที่ข้อ จำกัด เพื่อแก้ไขจากนั้นคลิกที่รายการที่มีเครื่องหมาย ".Margin" คุณก็สามารถปิด "Relative to Margin" ได้โดยเลือกรายการนั้น

เลือกเทียบกับระยะขอบ


นี่คือสิ่งที่ฉันมองหาเมื่อมาที่นี่! ขอบคุณ
netigger

1

คำตอบของแดนได้ผล ฉันแค่อยากจะระบุว่าหากคุณตั้งค่ามุมมองของคุณใน storyBoard ที่ y <20 และกำหนดค่าข้อ จำกัด ผ่านแผงพินมันจะตั้งค่าสูงสุดเป็น superview:

ใส่คำอธิบายภาพที่นี่

ใส่คำอธิบายภาพที่นี่


0

หากความสูงของมุมมองถูกตั้งค่าเป็น 0 โดยไม่ได้ตั้งใจคำแนะนำการจัดวางแนวตั้งไปยังยอดนิยมจะไม่ปรากฏขึ้น Vertical Space to Bottom Layout Guide จะปรากฏขึ้นซึ่งจะต้องมีเหตุผลสำหรับคนใน Apple ประมาณปี 2004


0

คำตอบข้างต้นไม่ได้ผลสำหรับฉัน แต่ฉันต้องทำการแฮ็คเพื่อตั้งค่ามุมมองย่อยของฉันด้วยด้านบนสุดของซูเปอร์วิวแทนด้วยคำแนะนำการจัดวางยอดนิยม

  • ขั้นแรกตั้งศูนย์มุมมองย่อยในแนวตั้งด้วยซูเปอร์วิว
  • จากนั้นเปลี่ยนศูนย์ Yจำกัด สำหรับ subview เช่นเดียวกับ SuperView ไปสูงสุดจำกัด

คุณพร้อมที่จะไปแล้ว

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