ปรับขนาดมุมมองภายใน UIStackView เพื่อเติมเต็มขนาดหน้าจอที่เหลือในขณะรันไทม์

ฉันมีการตั้งค่าต่อไปนี้บนกระดานเรื่องราวของฉัน:

UIScrollView
|- UIStackView
    |- View1
    |- View2
    |- View3
    |- View4

เนื้อหาบางส่วนภายใน View1-4 นั้นเป็นแบบไดนามิก และ View2 มีปุ่ม หากคลิกปุ่มนี้ ScrollView จะเลื่อนไปที่ออฟเซ็ตเพื่อให้ View2 อยู่ที่ด้านบนของหน้าจอที่มองเห็นได้ View2 มีความสูงคงที่และทราบอยู่ที่ 100 ตอนนี้ฉันจะปรับขนาด View3 ได้อย่างไรหลังจากคลิกปุ่มและเลื่อนเสร็จแล้ว เพื่อให้เต็มส่วนที่เหลือของหน้าจอ โดยทำงานบนอุปกรณ์ทั้งหมดได้ ฉันจะต้องคำนวณความสูงของหน้าจอและลบความสูงของ View2 หรือไม่ หรือมีวิธีแบบลีนกับการวางอัตโนมัติหรือไม่?


person Pauli    schedule 07.01.2019    source แหล่งที่มา


คำตอบ (1)


คุณสามารถสร้างข้อจำกัดสำหรับความสูงของ View3 ที่เท่ากับความสูงของมุมมองรูท โดยมีค่าคงที่เป็น -100 จากนั้นคุณสามารถสลับ isActive บนข้อจำกัดนี้ จากนั้น View3 จะปรับขนาดตามที่คุณต้องการโดยอัตโนมัติ

person Rengers    schedule 07.01.2019
comment
ฉันสามารถตั้งค่าข้อจำกัดนี้เป็น IB ได้หรือไม่ น่าจะไม่ใช่เพราะความสูงของหน้าจอใช่ไหม? ฉันจะต้องสร้างช่องทางสำหรับข้อจำกัดและตั้งค่าใน viewDidLoad หรือไม่ - person Pauli; 07.01.2019
comment
คุณสามารถตั้งค่าใน IB ได้หาก UIViewController ครอบคลุมทั้งหน้าจอ โดยทำให้เท่ากับมุมมองของ UIViewController คุณยังสามารถทำให้มันเท่ากับความสูงของ UIScrollView ได้หากเหมาะสมกว่า ขึ้นอยู่กับลำดับชั้นการดูของคุณ และคุณต้องมี IBOutlet หรือคุณสมบัติปกติเพื่อสลับ isActive - person Rengers; 07.01.2019