UIStackView
ใช้ข้อ จำกัด ภายในเพื่อวางตำแหน่งการดูย่อยที่จัดเรียงไว้ ข้อ จำกัด ใดที่สร้างขึ้นขึ้นอยู่กับวิธีกำหนดค่ามุมมองสแต็กเอง ตามค่าเริ่มต้นมุมมองสแต็กจะสร้างข้อ จำกัด ที่จัดวางการชมย่อยที่จัดเรียงไว้ในแนวนอนการตรึงมุมมองนำหน้าและต่อท้ายไปที่ขอบนำหน้าและต่อท้ายของตัวเอง ดังนั้นรหัสของคุณจะสร้างเลย์เอาต์ที่มีลักษณะดังนี้:
|[view1][view2]|
พื้นที่ที่จัดสรรให้แต่ละมุมมองย่อยนั้นพิจารณาจากปัจจัยหลายประการรวมถึงขนาดเนื้อหาที่แท้จริงของ subview และความต้านทานการบีบอัดและลำดับความสำคัญของการแฮ็กเนื้อหา ตามค่าเริ่มต้นUIView
อินสแตนซ์จะไม่กำหนดขนาดเนื้อหาที่แท้จริง นี่คือสิ่งที่เป็นผู้ให้บริการชั้นย่อยทั่วไปเช่นหรือUILabel
UIButton
เนื่องจากความต้านทานการบีบอัดเนื้อหาและลำดับความสำคัญของการแฮ็กเนื้อหาของสองUIView
อินสแตนซ์ใหม่จะเหมือนกันและไม่มีมุมมองที่ให้ขนาดเนื้อหาที่แท้จริงเครื่องมือโครงร่างต้องคาดเดาได้ดีที่สุดว่าขนาดใดควรจัดสรรให้กับแต่ละมุมมอง ในกรณีของคุณจะกำหนดมุมมองแรก 100% ของพื้นที่ว่างและไม่มีมุมมองที่สอง
หากคุณแก้ไขโค้ดเพื่อใช้งานUILabel
อินสแตนซ์แทนคุณจะได้ผลลัพธ์ที่ดีกว่า:
UILabel *label1 = [UILabel new];
label1.text = @"Label 1";
label1.backgroundColor = [UIColor blueColor];
UILabel *label2 = [UILabel new];
label2.text = @"Label 2";
label2.backgroundColor = [UIColor greenColor];
[self.stack1 addArrangedSubview:label1];
[self.stack1 addArrangedSubview:label2];
โปรดทราบว่าไม่จำเป็นต้องสร้างข้อ จำกัด ใด ๆ ด้วยตนเอง นี่คือประโยชน์หลักของการใช้UIStackView
- ซ่อนรายละเอียดการจัดการข้อ จำกัด จากนักพัฒนาซอฟต์แวร์ (มักจะน่าเกลียด)