คำถามติดแท็ก autolayout

Auto Layout เป็นระบบโครงร่างส่วนต่อประสานผู้ใช้ที่อธิบายถึงข้อ จำกัด สำหรับ OS X และ iOS

9
จะอัปเดตข้อจำกัดความสูงคงที่ของ UIView แบบเป็นโปรแกรมได้อย่างไร
ฉันมี UIViewและตั้งข้อ จำกัด โดยใช้ Xcode Interface Builder ตอนนี้ฉันต้องการอัปเดตสิ่งนั้น UIViewค่าคงที่ความสูงของอินสแตนซ์นั้นโดยทางโปรแกรม มีฟังก์ชั่นที่เหมือนmyUIView.updateConstraints()แต่ไม่รู้จะใช้ยังไง

16
ปัญหาการจัดวางหลังจากอัปเดตเป็น Xcode 8
นี่คือก่อนและหลังของหน้าจอหนึ่งของฉันหลังจากที่ฉันอัปเกรดเป็น Xcode 8 ทั้งหมดที่ฉันทำคือเปิดmain.storyboardของฉันจากนั้นฉันสร้างและเรียกใช้แอพของฉันบนโทรศัพท์ของฉัน ในการควบคุมเวอร์ชันของฉันฉันเห็น Xcode กำลังทำการเปลี่ยนแปลงมากมายกับ main.storyboard ของฉันเพียงแค่เปิดมันขึ้นมา เมื่อใดก็ตามที่ฉันลบการเปลี่ยนแปลงเหล่านั้นฉันจะเห็นสิ่งที่ฉันใช้เพื่อดูใน Xcode 7.3.1 แต่ทันทีที่ฉันเปิดตัวสร้างส่วนต่อประสานกับสตอรีบอร์ดของฉันอีกครั้งฉันก็เห็นการเปลี่ยนแปลงเหล่านั้นกลับมา มีอะไรที่ฉันสามารถทำได้ที่นี่? ก่อน Xcode 8 หลังจากอัปเดตเป็น Xcode 8
102 ios  xcode  autolayout  xcode8  ios10 

29
เป็นไปได้ไหมที่จะใช้ AutoLayout กับ tableHeaderView ของ UITableView
ตั้งแต่ฉันค้นพบว่าAutoLayoutฉันใช้มันทุกที่ตอนนี้ฉันกำลังพยายามใช้กับไฟล์tableHeaderView. ฉันทำsubclassของUIViewทุกอย่างที่เพิ่ม (ป้าย ฯลฯ ... ) ผมอยากมีข้อ จำกัด ของพวกเขาแล้วฉันเพิ่มนี้CustomViewไป'UITableViewtableHeaderView ทุกอย่างทำงานได้ดียกเว้นUITableViewเสมอแสดงข้างต้นCustomViewโดยข้างต้นผมหมายถึงCustomViewคือภายใต้UITableViewดังนั้นจึงไม่สามารถมองเห็นได้! ดูเหมือนว่าไม่ว่าฉันจะทำอะไรค่าheightของUITableView' tableHeaderViewจะเป็น0 เสมอ (ดังนั้นคือความกว้าง x และ y) คำถามของฉัน: มันเป็นไปได้ที่ทุกคนจะบรรลุนี้โดยไม่ต้องตั้งกรอบด้วยตนเอง ? แก้ไข:CustomView ' subviewที่ฉันใช้มีข้อ จำกัด เหล่านี้: _title = [[UILabel alloc]init]; _title.text = @"Title"; [self addSubview:_title]; [_title keep:[KeepTopInset rules:@[[KeepEqual must:5]]]]; // title has to stay at least 5 away from the supperview …

4
ใช้ Storyboard เพื่อปิดบัง UIView และให้มุมโค้งมน?
คำถามมากมายเช่นนี้จะอธิบายถึงวิธีการสร้างมาสก์โดยใช้โปรแกรมและให้มุมโค้งมนกับ UIView มีวิธีดำเนินการทั้งหมดภายใน Storyboard หรือไม่? แค่ถามเพราะดูเหมือนว่าการสร้างมุมโค้งมนใน Storyboard จะช่วยให้การแบ่งเขตระหว่างการนำเสนอและตรรกะชัดเจน

14
UIStackView“ ไม่สามารถตอบสนองข้อ จำกัด ได้พร้อมกัน” ในมุมมองที่ซ่อนอยู่“ squished”
เมื่อ "แถว" UIStackView ของฉันขาดตอนพวกเขาจะส่งAutoLayoutคำเตือน อย่างไรก็ตามพวกเขาแสดงผลได้ดีและไม่มีอะไรผิดปกตินอกเหนือจากการบันทึกประเภทนี้: ไม่สามารถปฏิบัติตามข้อ จำกัด พร้อมกันได้ อาจมีข้อ จำกัด อย่างน้อยหนึ่งข้อในรายการต่อไปนี้คือข้อ จำกัด ที่คุณไม่ต้องการ ลองทำสิ่งนี้: (1) ดูข้อ จำกัด แต่ละข้อแล้วลองหาสิ่งที่คุณไม่คาดคิด (2) ค้นหารหัสที่เพิ่มข้อ จำกัด หรือข้อ จำกัด ที่ไม่ต้องการและแก้ไข (หมายเหตุ: หากคุณเห็นNSAutoresizingMaskLayoutConstraintsว่าคุณไม่เข้าใจโปรดดูเอกสารสำหรับUIViewคุณสมบัติtranslatesAutoresizingMaskIntoConstraints) ( ตอนนี้ยังไม่แน่ใจว่าจะแก้ไขอย่างไร แต่ดูเหมือนจะไม่ผิดอะไรนอกจากสร้างความรำคาญ มีใครรู้วิธีแก้ไหม ที่น่าสนใจคือข้อ จำกัด ของการจัดวางมักจะถูกแท็กด้วย"การซ่อน UISV"ซึ่งบ่งชี้ว่าอาจจะละเลยความสูงต่ำสุดสำหรับมุมมองย่อยหรือบางสิ่งในอินสแตนซ์นี้?

13
เนื่องจาก Xcode 8 และ iOS10 มุมมองจึงไม่ได้รับการปรับขนาดอย่างเหมาะสมบน viewDidLayoutSubviews
ดูเหมือนว่าเมื่อเปิด Xcode 8 viewDidLoadมุมมองย่อยของวิวคอนโทรลเลอร์ทั้งหมดจะมีขนาดเท่ากับ 1000x1000 สิ่งที่แปลก แต่โอเคviewDidLoadไม่เคยมีสถานที่ที่ดีกว่าในการปรับขนาดมุมมองอย่างถูกต้อง แต่viewDidLayoutSubviewsเป็น! และในโครงการปัจจุบันของฉันฉันพยายามพิมพ์ขนาดของปุ่ม: - (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; NSLog(@"%@", self.myButton); } บันทึกแสดงขนาด (1000x1000) สำหรับ myButton! จากนั้นถ้าฉันเข้าสู่ระบบด้วยการคลิกปุ่มตัวอย่างเช่นบันทึกจะแสดงขนาดปกติ ฉันใช้การจัดวางอัตโนมัติ เป็นบั๊กหรือเปล่า?
95 ios  autolayout  ios10  xcode8 

3
ข้อ จำกัด “ ความกว้างเท่ากับความสูง” ในตัวสร้างอินเทอร์เฟซ
ฉันไม่พบวิธีสร้างข้อ จำกัด "สี่เหลี่ยมจัตุรัส" ซึ่งหมายความว่า "ความกว้างเท่ากับความสูง" ในตัวสร้างอินเทอร์เฟซ ฉันเดาว่าเป็นไปได้ที่จะเพิ่มข้อ จำกัด ดังกล่าวโดยใช้โปรแกรม มีอะไรที่ฉันสามารถทำได้ใน IB? บางทีฉันอาจจะไม่เห็นมัน? ดูเหมือนเป็นเรื่องเล็กน้อย แต่ฉันหาไม่เจอ

5
iOS Autolayout: ปุ่มสองปุ่มที่มีความกว้างเท่ากันเคียงข้างกัน
ขณะนี้ฉันมีปัญหากับ AutoLayout ฉันใช้ตัวสร้างอินเทอร์เฟซและกำลังพยายามวางตำแหน่งปุ่มสองปุ่มที่มีความกว้างเท่ากันเคียงข้างกันดังภาพประกอบในภาพต่อไปนี้ จากภาพตัวอย่างต่อไปนี้ titleImage ของฉันได้รับการ จำกัด อย่างเหมาะสมและแสดงอย่างถูกต้อง แต่ปุ่มต่างๆไม่แสดง ฉันได้ทดลองโดยจัดปุ่ม 1 ให้ตรงกับขอบนำหน้าของ titleImage และ button2 กับขอบต่อท้ายของ titleImage อย่างไรก็ตามการกระจายความกว้างระหว่างปุ่มทั้งสองจะเอียงในจุดนี้ดังที่แสดงด้านล่าง วัตถุประสงค์ของฉันคือการทำความเข้าใจว่าข้อ จำกัด ใดที่ขาดหายไปและควรใช้กับปุ่มทั้งสองเพื่อรักษาความกว้างเท่ากันโดยไม่คำนึงถึงอุปกรณ์ ถ้าเป็นไปได้ฉันต้องการบรรลุสิ่งนี้ผ่านตัวสร้างอินเทอร์เฟซแทนที่จะเป็นโค้ดเพิ่มเติม
93 ios  iphone  xcode  autolayout 

16
ลบข้อ จำกัด ทั้งหมดที่มีผลต่อ UIView
ฉันมี UIView ซึ่งวางอยู่บนหน้าจอผ่านข้อ จำกัด หลายประการ ข้อ จำกัด บางอย่างเป็นของ Superview ส่วนข้อ จำกัด อื่น ๆ เป็นของบรรพบุรุษคนอื่น ๆ (เช่นอาจเป็นคุณสมบัติการดูของ UIViewController) ฉันต้องการลบข้อ จำกัด เก่า ๆ เหล่านี้ทั้งหมดและวางไว้ที่ใหม่โดยใช้ข้อ จำกัด ใหม่ ฉันจะทำสิ่งนี้ได้อย่างไรโดยไม่ต้องสร้าง IBOutlet สำหรับทุกข้อ จำกัด และต้องจำว่ามุมมองใดเป็นเจ้าของข้อ จำกัด ดังกล่าว ในการอธิบายอย่างละเอียดวิธีการที่ไร้เดียงสาคือการสร้าง IBOutlets จำนวนมากสำหรับข้อ จำกัด แต่ละข้อจากนั้นจะเกี่ยวข้องกับการเรียกรหัสเช่น: [viewA removeConstraint:self.myViewsLeftConstraint]; [viewB removeConstraint:self.myViewsTopConstraint]; [viewB removeConstraint:self.myViewsBottomConstraint]; [self.view removeConstraint:self.myViewsRightConstraint]; ปัญหาเกี่ยวกับรหัสนี้คือแม้ในกรณีที่ง่ายที่สุดฉันจะต้องสร้าง IBOutlets 2 รายการ สำหรับเลย์เอาต์ที่ซับซ้อนสิ่งนี้สามารถเข้าถึง IBOutlets …

8
ฉันจะเปลี่ยนลำดับความสำคัญของข้อ จำกัด ในเวลาทำงานได้อย่างไร
ฉันมีมุมมองที่มีความสูงแบบไดนามิกและฉันกำลังพยายามเปลี่ยนลำดับความสำคัญของมุมมองนี้ในเวลาทำงาน นี่คือส่วนหนึ่งของรหัสของฉัน if (index == 0) { surveyViewHeightConstraint.constant = 0; surveyViewHeightConstraint.priority = 1000; } else if (index == 1) { surveyViewHeightConstraint.constant = 163; surveyViewHeightConstraint.priority = 500; } ฉันกำลังเปลี่ยนดัชนีด้วยการทำงานของปุ่ม เมื่อฉันเรียกใช้รหัสนี้ฉันได้รับข้อผิดพลาดนี้: *** Assertion failure in -[NSLayoutConstraint setPriority:], /SourceCache/Foundation/Foundation-1141.1/Layout.subproj/NSLayoutConstraint.m:174 ความผิดพลาดของฉันที่นี่คืออะไร?

12
ฉันจะตั้งค่าความสูงของ tableHeaderView (UITableView) ด้วยการจัดวางอัตโนมัติได้อย่างไร
ฉันทุบหัวกับกำแพงเป็นเวลา 3 หรือ 4 ชั่วโมงที่ผ่านมาและดูเหมือนจะคิดไม่ออก ฉันมี UIViewController ที่มี UITableView แบบเต็มหน้าจออยู่ข้างใน (มีบางสิ่งอื่น ๆ บนหน้าจอซึ่งเป็นสาเหตุที่ฉันไม่สามารถใช้ UITableViewController) และฉันต้องการให้ tableHeaderView ของฉันปรับขนาดด้วยการจัดวางอัตโนมัติ ไม่จำเป็นต้องพูดว่ามันไม่ร่วมมือ ดูภาพหน้าจอด้านล่าง เนื่องจากภาพรวมป้าย (เช่นข้อความ "แสดงข้อมูลภาพรวมที่นี่") มีเนื้อหาแบบไดนามิกฉันใช้การจัดวางอัตโนมัติเพื่อปรับขนาดและเป็น superview ฉันมีทุกอย่างที่ปรับขนาดได้ดียกเว้น tableHeaderView ซึ่งอยู่ด้านล่าง Paralax Table View ใน hiearchy วิธีเดียวที่ฉันพบในการปรับขนาดมุมมองส่วนหัวนั้นเป็นแบบโปรแกรมโดยใช้รหัสต่อไปนี้: CGRect headerFrame = self.headerView.frame; headerFrame.size.height = headerFrameHeight; self.headerView.frame = headerFrame; [self.listTableView setTableHeaderView:self.headerView]; ในกรณีนี้ headerFrameHeight คือการคำนวณความสูง tableViewHeader ด้วยตนเองดังนี้(innerHeaderView …

7
ฉันจะตั้งค่าข้อ จำกัด อัตราส่วนโดยใช้โปรแกรมใน iOS ได้อย่างไร
ฉันใช้รูปแบบอัตโนมัติสำหรับตัวควบคุมมุมมองของฉัน ฉันตั้งค่าตำแหน่ง V และ H ไว้ในข้อ จำกัด แต่ฉันต้องการทราบว่าฉันจะเพิ่มขนาดปุ่มได้อย่างไรเมื่อเปลี่ยนเป็น 5s, 6 และ 6 Plus นี่เป็นวิธีที่ฉันเพิ่มข้อ จำกัด สำหรับปุ่มเข้าสู่ระบบ: NSArray *btncon_V=[NSLayoutConstraint constraintsWithVisualFormat:@"V:[btnLogin(40)]" options:0 metrics:nil views:viewsDictionary]; [btnLogin addConstraints:btncon_V]; NSArray *btncon_POS_H=[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-100-[btnLogin]-100-|" options:0 metrics:nil views:viewsDictionary]; [self.view addConstraints:btncon_POS_H]; NSArray *btncon_POS_V=[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-70-[Title]-130-[lblFirst]-0-[lblSecond]-20-[textusername]-10-[txtpassword]-10-[btnLogin]" options:0 metrics:nil views:viewsDictionary]; [self.view addConstraints:btncon_POS_V]; แต่ปัญหาของฉันคือในขณะที่จัดการช่องว่างด้านซ้ายและด้านขวา แต่ iPhone 6 และ 6 Plus ได้รับการยืดออกเนื่องจากความสูงได้รับการแก้ไขแล้ว ฉันจะเพิ่มขนาดตามขนาดหน้าจอได้อย่างไร? ฉันคิดว่านี่อาจเป็นอัตราส่วนภาพ …

6
การสร้างข้อ จำกัด ของโครงร่างโดยใช้โปรแกรม
ฉันรู้ว่ามีคนถามคำถามมากมายเกี่ยวกับเรื่องนี้อยู่แล้ว แต่ถึงแม้จะมีคำตอบฉันก็ไม่สามารถใช้งานได้ เมื่อฉันจัดการกับข้อ จำกัด บนกระดานเรื่องราวมันง่าย แต่ในรหัสฉันมีช่วงเวลาที่ยากลำบาก ตัวอย่างเช่นฉันพยายามที่จะมีมุมมองที่อยู่ทางด้านขวาและมีความสูงของหน้าจอตามการวางแนวหน้าจอ นี่คือรหัสของฉัน: UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 748)]; myView.backgroundColor = [UIColor redColor]; [self.view addSubview:myView]; [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[myView(>=748)]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(myView)]]; ไม่เป็นไปตามข้อ จำกัด บางประการ ไม่เห็นมีอะไรผิดปกติ นอกจากนี้เหตุใดฉันจึงไม่สามารถใช้คุณสมบัติ like self.myViewแทนตัวแปรท้องถิ่นเช่นmyView?

8
Xcode 11 เพิ่มข้อ จำกัด ใหม่ตั้งศูนย์: ใช้ค่าชุดแทนค่าเริ่มต้น / มาตรฐาน
ฉันเคยใช้ autolayout เพิ่มข้อ จำกัด ใหม่เพื่อสร้างข้อ จำกัด ง่ายๆในการดู / กำกับดูแลมุมมองแบบสัมพัทธ์เช่นนี้ (สำหรับเวลา loooong): อย่างไรก็ตามเมื่อเร็ว ๆ นี้หลังจากอัพเดทเป็น xcode ล่าสุด (11.3.3 หรือเพียง 11.3 / 11C29) ฉันมีปัญหาแปลก ๆ นี้: เมื่อฉันตั้งค่าคงที่ = 0 พวกเขามักจะสร้างข้อ จำกัด ในลักษณะที่ไม่พึงประสงค์เช่นนี้: และดูเหมือนว่าค่าเริ่มต้นจะอยู่ที่ 20 และทำให้มุมมองของฉันดูผิดไป (0 เทียบกับ 20?) หากฉันแก้ไขโดยแก้ไขข้อ จำกัด เช่นนี้: จากนั้นจะแก้ไขอีกครั้ง (ภาพจะแก้ไขข้อ จำกัด ก่อนที่จะแก้ไขจะแสดงค่าคงที่ = Standard) ฉันไม่รู้ด้วยซ้ำว่าจะอธิบายปัญหาได้อย่างไร แต่ฉันจะแก้ไขเรื่องนี้ใหม่add new constraintเพื่อใช้จุดประสงค์แทนมาตรฐาน / …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.