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

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

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

12
ฉันจะเปลี่ยนแปลงข้อ จำกัด การเคลื่อนไหวได้อย่างไร
ฉันกำลังอัปเดตแอปเก่าด้วยแอนAdBannerViewและเมื่อไม่มีโฆษณามันสไลด์ปิดหน้าจอ เมื่อมีโฆษณามันจะเลื่อนบนหน้าจอ สิ่งพื้นฐาน แบบเก่าฉันตั้งกรอบในบล็อกภาพเคลื่อนไหว รูปแบบใหม่ฉันมีIBOutletข้อ จำกัด ในการจัดวางอัตโนมัติซึ่งกำหนดYตำแหน่งในกรณีนี้คือระยะห่างจากด้านล่างของ superview และแก้ไขค่าคงที่: - (void)moveBannerOffScreen { [UIView animateWithDuration:5 animations:^{ _addBannerDistanceFromBottomConstraint.constant = -32; }]; bannerIsVisible = FALSE; } - (void)moveBannerOnScreen { [UIView animateWithDuration:5 animations:^{ _addBannerDistanceFromBottomConstraint.constant = 0; }]; bannerIsVisible = TRUE; } และแบนเนอร์เคลื่อนไหวอย่างที่คาดไว้ แต่ไม่มีภาพเคลื่อนไหว UPDATE:ฉันได้ดูWWDC 12 พูดคุยแนวปฏิบัติที่เป็นเลิศสำหรับเค้าโครงอัตโนมัติ Masteringซึ่งครอบคลุมภาพเคลื่อนไหว มันอธิบายถึงวิธีการปรับปรุงข้อ จำกัด โดยใช้CoreAnimation : ฉันได้ลองใช้โค้ดต่อไปนี้แล้ว แต่ได้ผลลัพธ์เหมือนกันทุกประการ: - …

7
Cocoa Autolayout: การแฮ็กเนื้อหากับการจัดลำดับความสำคัญความต้านทานการบีบอัดเนื้อหา
ฉันไม่พบคำตอบที่ชัดเจนในเอกสารของ Apple เกี่ยวกับ Cocoa Autolayout เกี่ยวกับความแตกต่างระหว่างการกอดเนื้อหาและการต่อต้านการบีบอัด ใครสามารถอธิบายประเพณีและความแตกต่างได้บ้าง
643 cocoa  autolayout 

30
ฉันจะปรับขนาด UITextView เป็นเนื้อหาได้อย่างไร
มีวิธีที่ดีในการปรับขนาดของ a UITextViewเพื่อให้สอดคล้องกับเนื้อหาหรือไม่? พูดเช่นฉันมีUITextViewที่มีหนึ่งบรรทัดข้อความ: "Hello world" ฉันจะเพิ่มข้อความอีกบรรทัด: "Goodbye world" มีวิธีที่ดีใน Cocoa Touch ที่จะได้รับสิ่งrectนั้นซึ่งจะเก็บทุกบรรทัดในมุมมองข้อความเพื่อให้ฉันสามารถปรับมุมมองพาเรนต์ได้หรือไม่? เป็นอีกตัวอย่างหนึ่งให้ดูที่ฟิลด์ 'บันทึกย่อของเหตุการณ์ในแอปพลิเคชันปฏิทิน - โปรดสังเกตว่าเซลล์ (และUITextViewมี) ขยายออกเพื่อเก็บข้อความทุกบรรทัดในสตริงของโน้ตได้อย่างไร

30
UIScrollView ความคลุมเครือขนาดเนื้อหาที่เลื่อนได้
เพื่อน devs ฉันมีปัญหากับ AutoLayout ในตัวสร้างส่วนต่อประสาน (Xcode 5 / iOS 7) มันเป็นพื้นฐานและสำคัญมากดังนั้นฉันคิดว่าทุกคนควรรู้วิธีการทำงานอย่างถูกต้อง หากนี่เป็นข้อผิดพลาดใน Xcode มันเป็นสิ่งที่สำคัญมาก! ดังนั้นเมื่อใดก็ตามที่ฉันมีลำดับชั้นการดูเช่นนี้ฉันพบปัญหา: >UIViewController >> UIView >>>UIScrollView >>>>UILabel (or any other comparable UIKit Element) UIScrollView มีข้อ จำกัด ที่มั่นคงเช่น 50 px จากทุกด้าน (ไม่มีปัญหา) จากนั้นฉันเพิ่มข้อ จำกัด ของ Space Space ลงใน UILabel (ไม่มีปัญหา) (และฉันสามารถปักหมุดความสูง / ความกว้างของฉลากได้โดยไม่ต้องเปลี่ยนอะไรเลย แต่ควรจะไม่จำเป็นเนื่องจากขนาดที่แท้จริงของฉลาก) ปัญหาเริ่มต้นขึ้นเมื่อฉันเพิ่มข้อ จำกัด ต่อท้ายใน UILabel: …

16
วิธีเพิ่มข้อ จำกัด แบบโปรแกรมโดยใช้ Swift
ฉันพยายามคิดเรื่องนี้มาตั้งแต่สัปดาห์ที่แล้วโดยไม่ต้องทำอะไรเพิ่มอีก ตกลงดังนั้นฉันจำเป็นต้องใช้ข้อ จำกัด บางอย่างโดยทางโปรแกรมในSwiftกับการUIViewใช้รหัสนี้: var new_view:UIView! = UIView(frame: CGRectMake(0, 0, 100, 100)); new_view.backgroundColor = UIColor.redColor(); view.addSubview(new_view); var constX:NSLayoutConstraint = NSLayoutConstraint(item: new_view, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0); self.view.addConstraint(constX); var constY:NSLayoutConstraint = NSLayoutConstraint(item: new_view, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: …

4
วิธีทำให้ลูกของ StackPanel เติมเต็มพื้นที่สูงสุดลงได้อย่างไร
ฉันต้องการข้อความต่อเนื่องทางซ้ายและกล่องช่วยเหลือทางด้านขวา กล่องความช่วยเหลือควรขยายไปจนถึงด้านล่างสุด ถ้าคุณถอดด้านนอกออกStackPanelมันใช้งานได้ดีมาก แต่สำหรับเหตุผลของการจัดวาง (ฉันกำลังแทรก UserControls แบบไดนามิก) ฉันต้องมีการตัดStackPanelคำ ฉันจะได้รับการGroupBoxขยายลงไปที่ด้านล่างของStackPanelตามที่คุณเห็นฉันได้ลอง: VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" Height="Auto" XAML: <Window x:Class="TestDynamic033.Test3" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Test3" Height="300" Width="600"> <StackPanel VerticalAlignment="Stretch" Height="Auto"> <DockPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="Auto" Margin="10"> <GroupBox DockPanel.Dock="Right" Header="Help" Width="100" Background="Beige" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" Height="Auto"> <TextBlock Text="This is the help that is available on the news screen." TextWrapping="Wrap" /> …

7
การจำลองพฤติกรรมแบบฟิตโดยใช้ข้อ จำกัด AutoLayout ใน Xcode 6
ฉันต้องการใช้ AutoLayout เพื่อปรับขนาดและเลย์เอาต์มุมมองในลักษณะที่ทำให้ระลึกถึงโหมดเนื้อหาแบบพอดีของ UIImageView ฉันมีมุมมองย่อยภายในมุมมองคอนเทนเนอร์ในตัวสร้างส่วนต่อประสาน มุมมองย่อยมีอัตราส่วนภาพโดยธรรมชาติซึ่งฉันต้องการเคารพ ขนาดของมุมมองคอนเทนเนอร์ไม่เป็นที่รู้จักจนกระทั่งรันไทม์ หากอัตราส่วนมุมมองของคอนเทนเนอร์กว้างกว่ามุมมองย่อยฉันต้องการให้ความสูงของมุมมองย่อยเท่ากับความสูงของมุมมองพาเรนต์ หากอัตราส่วนมุมมองของคอนเทนเนอร์สูงกว่ามุมมองย่อยฉันต้องการความกว้างของมุมมองย่อยเท่ากับความกว้างของมุมมองพาเรนต์ ในกรณีใดกรณีหนึ่งฉันต้องการให้มุมมองย่อยจัดกึ่งกลางแนวนอนและแนวตั้งภายในมุมมองคอนเทนเนอร์ มีวิธีใดบ้างที่จะบรรลุเป้าหมายนี้โดยใช้ข้อ จำกัด AutoLayout ใน Xcode 6 หรือในเวอร์ชันก่อนหน้า? เป็นการดีที่จะใช้ตัวสร้างส่วนต่อประสาน แต่ถ้าไม่ใช่ก็เป็นไปได้ที่จะกำหนดข้อ จำกัด ดังกล่าวโดยทางโปรแกรม

21
วิธีการใช้เลย์เอาต์อัตโนมัติเพื่อย้ายมุมมองอื่น ๆ เมื่อมุมมองถูกซ่อนอยู่?
ฉันได้ออกแบบ Cell ที่กำหนดเองของฉันใน IB แล้วทำการซับคลาสและเชื่อมต่อร้านค้าของฉันกับคลาสที่กำหนดเองของฉัน ฉันมีสามพรีวิวในเนื้อหาของเซลล์ซึ่ง ได้แก่ : UIView (cdView) และสองป้ายกำกับ (titleLabel และ emailLabel) บางครั้งฉันต้องการให้ UIView และป้ายกำกับสองรายการแสดงในเซลล์ของฉันและบางครั้งก็มีป้ายกำกับเพียงสองรายการทั้งนี้ขึ้นอยู่กับข้อมูลที่มีให้สำหรับแต่ละแถว สิ่งที่ฉันพยายามทำคือการตั้งข้อ จำกัด แบบนั้นถ้าฉันตั้งค่าคุณสมบัติ UIView ให้ซ่อนหรือฉันจะลบออกจาก superview ป้ายกำกับทั้งสองจะเลื่อนไปทางซ้าย ฉันพยายามตั้งค่าข้อ จำกัด ที่นำ UIView เป็น Superview (เนื้อหาของเซลล์) สำหรับ 10px และ UILabels นำข้อ จำกัด 10 px ไปยังมุมมองถัดไป (UIView) ต่อมาในรหัสของฉัน -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(IndexPath *)indexPath { ... Record …

10
ความกว้างสูงสุดของเลย์เอาต์อัตโนมัติที่ต้องการไม่สามารถใช้กับ iOS เวอร์ชันก่อนหน้า 8.0
ฉันเปิดโครงการ iOS ที่มีอยู่ด้วย Xcode6 beta6 และ Xcode จะแสดงคำเตือนต่อไปนี้สำหรับทั้ง Storyboard และ Xib ไฟล์: ความกว้างสูงสุดของเลย์เอาต์อัตโนมัติที่ต้องการไม่สามารถใช้กับ iOS เวอร์ชันก่อนหน้า 8.0 ฉันพยายามระบุคำเตือนด้วยการตั้งค่าความกว้างให้ชัดเจนดังนี้: แต่สิ่งนี้ไม่สามารถแก้ไขคำเตือนได้ พวกเขาจะถูกลบออกได้อย่างไร?
322 ios  autolayout  ios8  xcode6 

21
ได้รับข้อผิดพลาด“ แอปพลิเคชันนี้กำลังแก้ไขข้อผิดพลาด autolayout engine จากเธรดพื้นหลัง” หรือไม่
เคยพบข้อผิดพลาดนี้มากมายใน OS X ของฉันโดยใช้ swift: "แอปพลิเคชันนี้กำลังแก้ไขเอ็นจิ้น autolayout จากเธรดแบ็คกราวน์ซึ่งอาจนำไปสู่ความเสียหายของเครื่องยนต์และข้อผิดพลาดแปลก ๆ ซึ่งจะทำให้เกิดข้อยกเว้นในการเปิดตัวในอนาคต" ฉันมีNSWindowของฉันและฉันเปลี่ยนมุมมองไปcontentViewที่หน้าต่าง ฉันได้รับข้อผิดพลาดเมื่อฉันพยายามทำNSApp.beginSheetหน้าต่างหรือเมื่อฉันเพิ่มsubviewหน้าต่าง พยายามปิดใช้งานการเก็บข้อมูลอัตโนมัติและฉันไม่มีอะไรที่ใช้เค้าโครงอัตโนมัติ ความคิดใด ๆ บางครั้งมันก็โอเคและไม่มีอะไรเกิดขึ้นบางครั้งมันก็ทำให้ฉันUIและไม่มีอะไรเหลือ

29
เว้นช่องว่างหลายมุมมองภายในคอนเทนเนอร์มุมมอง
เค้าโครงอัตโนมัติทำให้ชีวิตของฉันลำบาก ในทางทฤษฎีแล้วมันจะมีประโยชน์จริง ๆ เมื่อฉันเปลี่ยน แต่ฉันดูเหมือนจะต่อสู้ตลอดเวลา ฉันได้ทำโครงการตัวอย่างเพื่อพยายามขอความช่วยเหลือ ไม่มีใครรู้วิธีทำให้ช่องว่างระหว่างมุมมองเพิ่มขึ้นหรือลดลงอย่างสม่ำเสมอเมื่อมีการปรับขนาดมุมมอง ต่อไปนี้เป็นป้ายกำกับสามป้าย (เว้นระยะในแนวตั้งด้วยตนเอง): สิ่งที่ฉันต้องการคือให้พวกเขาปรับขนาดช่องว่าง (ไม่ใช่ขนาดมุมมอง) เท่ากันเมื่อฉันหมุน ตามค่าเริ่มต้นมุมมองด้านบนและด้านล่างจะเลื่อนไปที่กึ่งกลาง:

9
layoutSubviews เรียกว่าเมื่อใด
ฉันมีมุมมองแบบกำหนดเองที่ไม่ได้รับlayoutSubviewข้อความระหว่างการเคลื่อนไหว ฉันมีมุมมองที่เต็มหน้าจอ มีมุมมองย่อยที่กำหนดเองที่ด้านล่างของหน้าจอที่ปรับขนาดได้อย่างถูกต้องในตัวสร้างส่วนต่อประสานหากฉันเปลี่ยนความสูงของแถบนำทาง layoutSubviewsถูกเรียกเมื่อมุมมองถูกสร้างขึ้น แต่จะไม่เกิดขึ้นอีก มุมมองย่อยของฉันวางไว้อย่างถูกต้อง ถ้าฉันปิดแถบสถานะระหว่างการโทรระบบlayoutSubviewsจะไม่เรียกมุมมองย่อยเลยแม้ว่ามุมมองหลักจะทำให้การปรับขนาดเป็นภาพเคลื่อนไหว ภายใต้สถานการณ์ใดที่layoutSubviewsเรียกว่าจริง? ฉันได้autoresizesSubviewsตั้งค่าเป็นNOสำหรับมุมมองที่กำหนดเองของฉัน และในตัวสร้างอินเทอร์เฟซฉันมีเสาด้านบนและด้านล่างและชุดลูกศรแนวตั้ง อีกส่วนหนึ่งของปริศนาคือหน้าต่างต้องเป็นกุญแจ: [window makeKeyAndVisible]; มิฉะนั้นมุมมองย่อยจะไม่ถูกปรับขนาดโดยอัตโนมัติ

15
NSLayoutConstraint คืออะไร“ UIView-Encapsulated-Layout-Height” และฉันควรบังคับให้มันคำนวณใหม่อย่างหมดจดอย่างไร
ฉันUITableViewทำงานภายใต้ iOS 8 และฉันใช้ความสูงของเซลล์อัตโนมัติจากข้อ จำกัด ในกระดานเรื่องราว หนึ่งในเซลล์ของฉันมีเซลล์เดียวUITextViewและฉันต้องการให้สัญญาและขยายตามการป้อนข้อมูลของผู้ใช้ - แตะเพื่อย่อ / ขยายข้อความ ฉันกำลังทำสิ่งนี้โดยเพิ่มข้อ จำกัด รันไทม์ลงในมุมมองข้อความและเปลี่ยนค่าคงที่ของข้อ จำกัด เพื่อตอบสนองต่อกิจกรรมของผู้ใช้: -(void)collapse:(BOOL)collapse; { _collapsed = collapse; if(collapse) [_collapsedtextHeightConstraint setConstant: kCollapsedHeight]; // 70.0 else [_collapsedtextHeightConstraint setConstant: [self idealCellHeightToShowFullText]]; [self setNeedsUpdateConstraints]; } เมื่อใดก็ตามที่ฉันทำสิ่งนี้ฉันใส่ไว้ในtableViewอัพเดตและโทร[tableView setNeedsUpdateConstraints]: [tableView beginUpdates]; [_briefCell collapse:!_showFullBriefText]; [tableView setNeedsUpdateConstraints]; // I have also tried // [self.tableView …

3
อะไรคือ“ ข้อ จำกัด ในการทำกำไร” ใน Storyboard ใน Xcode 6
ฉันกำลังทำงานกับการชำระอัตโนมัติและข้อ จำกัด และพบว่ามีConstrain to marginsตัวเลือกใน Xcode 6 ซึ่งไม่ปรากฏใน Xcode 5 และมีการตรวจสอบตามค่าเริ่มต้น ฉันสร้างโครงการทดสอบจากนั้นฉันเพิ่มUITableViewViewController บนเฟรมที่ตั้งค่าเป็นขนาดเดียวกับมุมมองและข้อ จำกัด ที่เพิ่ม Xcode 6 คุณสามารถดูที่นี่ได้แม้ว่า tableview จะมีเฟรมเดียวกับ view Xcode แนะนำให้เพิ่ม -16 เป็นข้อ จำกัด ในขณะที่ Xcode 5 แนะนำให้เพิ่มการเว้นวรรค 0 ตอนนี้เมื่อคุณยกเลิกการเลือกตัวเลือก "จำกัด ถึงระยะขอบ" จะทำงานเช่นเดียวกับ Xcode 5 และขอแนะนำให้เพิ่ม 0 เป็นข้อ จำกัด นอกจากนี้ฉันพบว่าเมื่อฉันเพิ่มข้อ จำกัด กับ Constrain เพื่อตรวจสอบระยะขอบฉันไม่สามารถเปิดไฟล์สตอรีบอร์ดใน Xcode 5 ได้อีกต่อไปดังนั้นจึงเป็นสิ่งใหม่ใน Xcode …

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