ฉันจะจัดเรียง UILabels สองอันเพื่อให้อันหนึ่งปรับขนาดอัตโนมัติและอีกอันใช้พื้นที่ที่เหลือได้อย่างไร

ฉันมีป้ายกำกับสองป้ายจัดเรียงตามแนวนอนใน TableViewCell ของฉัน ด้านขวาควรใช้พื้นที่เท่าที่ต้องการ ส่วนด้านซ้ายควรใช้พื้นที่ที่เหลือ ในกรณีที่ความยาวของป้ายทั้งสองยาวเกินความกว้างของเซลล์ ควรตัดป้ายด้านซ้ายให้เหลือพื้นที่แสดงได้เต็มที่ ป้ายกำกับจะจัดชิดด้านข้างหากสร้างความแตกต่าง

ตัวเลือก "จัดเรียง > เติมคอนเทนเนอร์ในแนวตั้ง" ใต้ตัวตรวจสอบขนาดคล้ายกับที่ฉันต้องการสำหรับป้ายกำกับด้านซ้าย แต่ฉันต้องการให้ใช้เฉพาะพื้นที่ที่ป้ายกำกับด้านขวาไม่ต้องการเท่านั้น

ตัวอย่าง

ถ้าฉันเพิ่มข้อจำกัดลงในช่องว่างต่อท้ายบนป้ายกำกับด้านซ้าย (ดูข้อจำกัดที่สามด้านล่าง) ผลลัพธ์ก็แทบจะเป็นสิ่งที่ฉันต้องการ แต่แทนที่จะให้ป้ายกำกับที่ถูกต้องได้รับพื้นที่ที่ต้องการ ป้ายกำกับด้านซ้ายจะใช้พื้นที่ที่ต้องการ (ดู ภาพสุดท้าย)

ข้อจำกัด

ตัวอย่างที่ 2


person Nathan Van Dyken    schedule 05.04.2018    source แหล่งที่มา
comment
คุณสามารถดำเนินการนี้โดยทางโปรแกรมโดยเพิ่มป้ายกำกับที่ถูกต้องก่อนด้วยจุดยึดต่อท้ายและไม่มีจุดยึดความกว้าง (หรือสูงสุด) (ใช้ sizeToFit เพื่อให้เนื้อหาของป้ายกำกับกลายเป็นความกว้างที่แท้จริง) จากนั้นคำนวณความกว้างใน layoutSubviews และใช้ความกว้างนั้นเป็น (ลบ ) ค่าคงที่สำหรับจุดยึดความกว้างของป้ายกำกับด้านซ้าย ด้วยแนวทางแบบเป็นโปรแกรม คุณสามารถพิจารณากรณีขอบที่เกี่ยวข้องกับความกว้างของฉลากและการจัดตำแหน่งได้ดียิ่งขึ้น โดยพื้นฐานแล้วนี่คือสิ่งที่การบีบอัดและการกอด API ทำในเบื้องหลัง แต่ฉันชอบการควบคุมการดำเนินการด้วยตนเองมากกว่า เพราะจะไม่มีวันมีความประหลาดใจใดๆ   -  person liquid    schedule 05.04.2018


คำตอบ (2)


ฉันคิดว่ามันง่ายกว่าที่คุณคาดหวัง ...

จำกัด "LeftLabel" นำหน้า จำกัดส่วนท้าย "RightLabel" จำกัดระยะห่างแนวนอนระหว่างสองถึง >= 8 จากนั้นให้ "LeftLabel" มีลำดับความสำคัญในการต้านทานการบีบอัดเนื้อหาเป็น Low (250)

ที่บอกให้เลย์เอาต์อัตโนมัติขยายแต่ละป้ายกำกับตามเนื้อหาข้อความ แต่ถ้าระยะห่างระหว่างป้ายกำกับเหล่านั้นน้อยกว่า 8 ให้ "RightLabel" ขยายเป็นข้อความ แต่ขยาย "LeftLabel" เฉพาะจุดที่เป็นเช่นนั้น 8 แต้มจาก "RightLabel"

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

เลือกป้ายกำกับด้านซ้าย:

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

ผลลัพธ์:

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

person DonMag    schedule 05.04.2018

ปรับลำดับความสำคัญในการกอดเนื้อหาและลำดับความสำคัญของการต้านทานการบีบอัด ป้ายกำกับด้านขวาควรมีลำดับความสำคัญในการกอดเนื้อหาในแนวนอนและลำดับความสำคัญในการต้านทานการบีบอัดเนื้อหาสูงกว่าด้านซ้าย เมื่อรวมกับข้อจำกัดต่อไปนี้ (เขียนด้วยภาษารูปแบบภาพ) ควรให้ผลลัพธ์ตามที่ต้องการ:

|-[leftLabel]-[rightLabel]-|

หากข้อความในป้ายกำกับด้านขวายาวเกินไป อาจทำให้ความกว้างของป้ายกำกับด้านซ้ายเป็น 0 ได้ ตั้งค่าข้อจำกัดความกว้างบนป้ายกำกับด้านซ้ายด้วยความกว้าง >= เพื่อแก้ไขปัญหา

person Sean Kladek    schedule 05.04.2018