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

คลาส UICollectionView จัดการชุดข้อมูลตามลำดับและนำเสนอโดยใช้เค้าโครงที่ปรับแต่งได้ มุมมองคอลเลกชันมีฟังก์ชันทั่วไปเช่นเดียวกับมุมมองตารางยกเว้นว่ามุมมองคอลเลกชันสามารถรองรับได้มากกว่าเค้าโครงคอลัมน์เดียว มุมมองคอลเลคชันรองรับเลย์เอาต์ที่ปรับแต่งได้ซึ่งสามารถใช้เพื่อใช้กริดแบบหลายคอลัมน์เลย์เอาต์แบบเรียงต่อกันเลย์เอาต์วงกลมและอื่น ๆ อีกมากมาย พร้อมใช้งานใน iOS 6.0 และใหม่กว่า

16
UICollectionView การปรับขนาดเซลล์ด้วยเค้าโครงอัตโนมัติ
ฉันกำลังพยายามปรับขนาดตัวเอง UICollectionViewCellsทำงานกับเค้าโครงอัตโนมัติ แต่ฉันไม่สามารถทำให้เซลล์ปรับขนาดตัวเองให้เข้ากับเนื้อหาได้ ฉันมีปัญหาในการทำความเข้าใจว่าขนาดของเซลล์มีการอัปเดตอย่างไรจากเนื้อหาของสิ่งที่อยู่ภายใน contentView ของเซลล์ นี่คือการตั้งค่าที่ฉันได้ลอง: กำหนดเองUICollectionViewCellด้วย a UITextViewใน contentView เลื่อนเพื่อที่UITextViewถูกปิดการใช้งาน ข้อ จำกัด ในแนวนอนของ contentView คือ: "H: | [_textView (320)]" กล่าวUITextViewคือถูกตรึงที่ด้านซ้ายของเซลล์ด้วยความกว้างที่ชัดเจน 320 ข้อ จำกัด ในแนวตั้งของ contentView คือ: "V: | -0 - [_ textView]" กล่าวคือUITextViewถูกตรึงไว้ที่ด้านบนของเซลล์ UITextViewมีชุดความสูงข้อ จำกัด ที่จะคงที่ซึ่งเป็นUITextViewรายงานที่จะพอดีกับข้อความ นี่คือสิ่งที่ดูเหมือนกับพื้นหลังของเซลล์ตั้งค่าเป็นสีแดงและUITextViewพื้นหลังตั้งค่าเป็นสีน้ำเงิน: ฉันใส่โครงการที่ผมได้เล่นกับบน GitHub ที่นี่

25
ระยะห่างระหว่างเซลล์ใน UICollectionView
ฉันจะตั้งค่าระยะห่างของเซลล์ในส่วนของได้UICollectionViewอย่างไร ฉันรู้ว่ามีสถานที่ให้บริการminimumInteritemSpacingฉันได้ตั้งไว้ที่ 5.0 ยังคงเป็นระยะห่างไม่ปรากฏ 5.0 ฉันใช้วิธีการมอบหมาย flowout - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { return 5.0; } ยังฉันไม่ได้รับผลลัพธ์ที่ต้องการ ฉันคิดว่ามันเป็นระยะห่างขั้นต่ำ ไม่มีวิธีใดที่ฉันสามารถกำหนดระยะห่างสูงสุดได้หรือไม่

5
วิธีสร้างมุมมองคอลเลกชันอย่างง่ายด้วย Swift
UICollectionViewฉันพยายามที่จะเรียนรู้วิธีการใช้งาน เอกสารเป็นเพียงเล็กน้อยยากที่จะเข้าใจและแบบฝึกหัดที่ผมพบว่ามีทั้งในวัตถุประสงค์ C หรือโครงการที่มีความซับซ้อนยาว เมื่อฉันได้เรียนรู้วิธีการใช้งานUITableView, เรา❤สวิฟท์ วิธีที่จะทำให้ tableview ง่ายๆกับ iOS 8 และสวิฟท์มีการตั้งค่าขั้นพื้นฐานมากและคำอธิบายที่จะได้รับฉันไป มีอะไรแบบนี้UICollectionViewมั้ย คำตอบด้านล่างคือความพยายามของฉันในการเรียนรู้ที่จะทำ

15
UICollectionView ระยะห่างระยะห่าง
ฉันมีรูปUICollectionViewที่แสดง ผมได้สร้าง collectionview UICollectionViewFlowLayoutโดยใช้ มันใช้งานได้ดี แต่ฉันต้องการเว้นระยะขอบ มันเป็นไปได้ที่จะทำใช้UICollectionViewFlowLayoutหรือฉันจะต้องดำเนินการของตัวเองUICollectionViewLayout?

11
การสร้าง UICollectionView โดยทางโปรแกรม
ฉันกำลังมองหาคำแนะนำหรือบทช่วยสอนที่จะแสดงวิธีการตั้งค่า UICollectionView อย่างง่ายโดยใช้รหัสเท่านั้น ฉันอ่านเอกสารในเว็บไซต์ของ Appleและฉันก็ใช้คู่มืออ้างอิงด้วยเช่นกัน แต่ฉันจะได้รับประโยชน์จากคำแนะนำง่ายๆที่สามารถแสดงให้ฉันเห็นถึงวิธีการตั้งค่า UICollectionView โดยไม่ต้องใช้สตอรีบอร์ดหรือไฟล์ XIB / NIB - แต่น่าเสียดายที่ฉันค้นหาทุกอย่างที่ฉันสามารถค้นหาได้คือ

7
UIRefreshControl บน UICollectionView จะทำงานได้ก็ต่อเมื่อคอลเลกชันเติมความสูงของคอนเทนเนอร์
ฉันพยายามที่จะเพิ่มUIRefreshControlไปUICollectionViewแต่ปัญหาคือการควบคุมการรีเฟรชไม่ปรากฏเว้นแต่มุมมองคอลเลกชันเติมขึ้นสูงของภาชนะพ่อแม่ของตน กล่าวอีกนัยหนึ่งยกเว้นว่ามุมมองการรวบรวมยาวพอที่จะต้องเลื่อนมันไม่สามารถดึงลงมาเพื่อเปิดเผยมุมมองการควบคุมการรีเฟรช ทันทีที่คอลเล็กชันมีขนาดเกินความสูงของคอนเทนเนอร์หลักจะถูกดึงลงมาและแสดงมุมมองการรีเฟรช ฉันได้ตั้งค่าโครงการ iOS อย่างรวดเร็วด้วยUICollectionViewมุมมองหลักภายในด้วยทางออกไปยังมุมมองคอลเลกชันเพื่อให้ฉันสามารถเพิ่มUIRefreshControlเข้าไปในviewDidLoadได้ นอกจากนี้ยังมีเซลล์ต้นแบบพร้อมตัวระบุการใช้ซ้ำcCell นี่คือรหัสทั้งหมดในคอนโทรลเลอร์และมันแสดงให้เห็นถึงปัญหาได้ค่อนข้างดี ในรหัสนี้ฉันตั้งค่าความสูงของเซลล์เป็น 100 ซึ่งไม่เพียงพอที่จะเติมจอแสดงผลและทำให้ไม่สามารถดึงมุมมองและการควบคุมการรีเฟรชจะไม่แสดง ตั้งค่าให้สูงกว่าเพื่อเติมการแสดงผลจากนั้นใช้งานได้ ความคิดใด ๆ @interface ViewController () <UICollectionViewDelegateFlowLayout, UICollectionViewDataSource> @property (strong, nonatomic) IBOutlet UICollectionView *collectionView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init]; [self.collectionView addSubview:refreshControl]; } -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { return 1; } -(NSInteger)collectionView:(UICollectionView *)collectionView …

9
วิธีการตั้งค่าระยะห่างระหว่างเซลล์และ UICollectionView - อัตราส่วนขนาด UICollectionViewFlowLayout
ฉันพยายามที่จะเพิ่มUICollectionViewการViewControllerและฉันจะต้องมี 3 เซลล์ต่อแถว 'โดยไม่ต้องช่องว่างระหว่างเซลล์ (มันควรมีลักษณะเช่นตาราง) ความกว้างของเซลล์ควรเป็นหนึ่งในสามของขนาดหน้าจอดังนั้นฉันคิดว่าความlayout.itemกว้างควรเท่ากัน แต่ฉันได้รับสิ่งนี้: ถ้าฉันลดขนาดนั้น (โดย7หรือ8 พิกเซลเช่น) มันจะดีกว่า แต่เซลล์ที่สามในแถวไม่สามารถมองเห็นได้อย่างสมบูรณ์และฉันยังมีพื้นที่ว่างนั้น (บน & ล่างและซ้ายและขวา) class ViewController: UIViewController, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource { var collectionView: UICollectionView? var screenSize: CGRect! var screenWidth: CGFloat! var screenHeight: CGFloat! override func viewDidLoad() { super.viewDidLoad() screenSize = UIScreen.mainScreen().bounds screenWidth = screenSize.width screenHeight = screenSize.height // Do any …

15
UICollectionView ภายใน UITableViewCell - ความสูงแบบไดนามิก?
หนึ่งในหน้าจอแอปพลิเคชันของเราต้องการให้เราวางUICollectionViewไฟล์UITableViewCell. สิ่งนี้UICollectionViewจะมีจำนวนรายการแบบไดนามิกทำให้มีความสูงซึ่งต้องคำนวณแบบไดนามิกเช่นกัน UICollectionViewแต่ผมกำลังทำงานเป็นปัญหาพยายามที่จะคำนวณความสูงของที่ฝังตัว การครอบคลุมของเราUIViewControllerถูกสร้างขึ้นในสตอรีบอร์ดและใช้ประโยชน์จากรูปแบบอัตโนมัติ แต่ฉันไม่รู้วิธีเพิ่มความสูงแบบไดนามิกUITableViewCellตามความสูงของไฟล์UICollectionView. ใครสามารถให้คำแนะนำหรือคำแนะนำเกี่ยวกับวิธีการทำสิ่งนี้ได้บ้าง?

15
UICollectionView เซลล์แบบเต็มความกว้างอนุญาตให้กำหนดค่าความสูงแบบไดนามิกอัตโนมัติหรือไม่
ในแนวตั้งUICollectionView, มันเป็นไปได้ที่จะมีเซลล์เต็มความกว้างแต่อนุญาตให้สูงแบบไดนามิกจะถูกควบคุมโดยautolayout ? นี่อาจทำให้ฉันรู้สึกว่าเป็น "คำถามที่สำคัญที่สุดใน iOS ที่ไม่มีคำตอบที่ดีจริงๆ" สำคัญ: โปรดทราบว่าใน 99% ของกรณีเพื่อให้ได้เซลล์ที่มีความกว้างเต็ม + การกำหนดค่าความสูงแบบไดนามิกอัตโนมัติเพียงแค่ใช้มุมมองตาราง มันง่ายมาก ตัวอย่างของตำแหน่งที่คุณต้องการมุมมองคอลเลคชันคืออะไร? มุมมองคอลเลคชันมีประสิทธิภาพมากกว่าการดูตารางอย่างไม่น่าเชื่อ ตัวอย่างที่ตรงไปตรงมาอย่างหนึ่งที่คุณต้องใช้มุมมองคอลเลคชันเพื่อให้ได้เซลล์แบบเต็มความกว้าง + ความสูงแบบไดนามิกอัตโนมัติ หากคุณเคลื่อนไหวระหว่างสองเค้าโครงในมุมมองคอลเลกชัน ตัวอย่างเช่นระหว่างเค้าโครงคอลัมน์ 1 ถึง 2 เมื่ออุปกรณ์หมุน นั่นเป็นสำนวนทั่วไปและปกติใน iOS น่าเสียดายที่สามารถทำได้โดยการแก้ปัญหาที่เกิดขึ้นใน QA นี้เท่านั้น : - /

13
วิธีกำหนดความสูงของ UICollectionView ด้วย FlowLayout
ฉันมีUICollectionViewกับUICollectionViewFlowLayoutและฉันต้องการที่จะคำนวณขนาดเนื้อหา (สำหรับการกลับมาในintrinsicContentSizeที่จำเป็นสำหรับการปรับความสูงที่ผ่านการ autolayout) ปัญหาคือแม้ว่าฉันจะมีความสูงคงที่และเท่ากันสำหรับทุกเซลล์ แต่ฉันก็ไม่รู้ว่าฉันมี "แถว" / บรรทัดในไฟล์UICollectionView. ฉันยังไม่สามารถระบุได้ว่าจะนับตามจำนวนรายการในแหล่งข้อมูลของฉันเนื่องจากเซลล์ที่แสดงรายการข้อมูลมีความกว้างแตกต่างกันดังนั้นจำนวนรายการที่ฉันมีในหนึ่งบรรทัดของไฟล์UICollectionView. เนื่องจากฉันไม่พบคำแนะนำใด ๆ เกี่ยวกับหัวข้อนี้ในเอกสารอย่างเป็นทางการและ googling ก็ไม่ได้นำเสนออะไรเพิ่มเติมความช่วยเหลือและแนวคิดใด ๆ จะได้รับการชื่นชมเป็นอย่างมาก

16
UICollection ดูดัชนีเซลล์ที่มองเห็นได้ในปัจจุบัน
ฉันใช้UICollectionViewแอปพลิเคชัน iPad เป็นครั้งแรก ฉันได้ตั้งค่าUICollectionViewให้ขนาดและขนาดเซลล์เท่ากันหมายถึงแสดงเพียงครั้งเดียวในแต่ละครั้ง ปัญหา: ตอนนี้เมื่อผู้ใช้เลื่อน UICollectionView ฉันต้องการทราบว่าเซลล์ใดมองเห็นได้ฉันต้องอัปเดตองค์ประกอบ UI อื่น ๆ เมื่อมีการเปลี่ยนแปลง ฉันไม่พบวิธีการมอบหมายใด ๆ สำหรับสิ่งนี้ ฉันจะบรรลุเป้าหมายนี้ได้อย่างไร? รหัส: [self.mainImageCollection setTag:MAIN_IMAGE_COLLECTION_VIEW]; [self.mainImageCollection registerClass:[InspirationMainImageCollectionCell class] forCellWithReuseIdentifier:@"cellIdentifier"]; [self.mainImageFlowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal]; [self.mainImageFlowLayout setMinimumInteritemSpacing:0.0f]; [self.mainImageFlowLayout setMinimumLineSpacing:0.0f]; self.mainImageFlowLayout.minimumLineSpacing = 0; [self.mainImageCollection setPagingEnabled:YES]; [self.mainImageCollection setShowsHorizontalScrollIndicator:NO]; [self.mainImageCollection setCollectionViewLayout:self.mainImageFlowLayout]; สิ่งที่ฉันได้ลอง: ในฐานะที่เป็นUICollectionViewไปตามUIScrollViewที่ผมได้เมื่อเลื่อนใช้ปลายมีUIScrollViewDelegateวิธีการ -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView แต่ภายในข้างต้นฟังก์ชั่นฉันจะได้รับดัชนีเซลล์ที่มองเห็นได้ในปัจจุบันของUICollectionView???

5
การระบุหนึ่งมิติของเซลล์ใน UICollectionView โดยใช้เค้าโครงอัตโนมัติ
ใน iOS 8 UICollectionViewFlowLayoutรองรับการปรับขนาดเซลล์โดยอัตโนมัติตามขนาดเนื้อหาของตนเอง ซึ่งจะปรับขนาดเซลล์ทั้งในด้านความกว้างและความสูงตามเนื้อหา เป็นไปได้หรือไม่ที่จะระบุค่าคงที่สำหรับความกว้าง (หรือความสูง) ของเซลล์ทั้งหมดและอนุญาตให้มิติอื่นปรับขนาดได้ สำหรับตัวอย่างง่ายๆให้พิจารณาป้ายหลายบรรทัดในเซลล์โดยมีข้อ จำกัด ในการวางตำแหน่งไว้ที่ด้านข้างของเซลล์ ป้ายกำกับหลายบรรทัดสามารถปรับขนาดได้หลายวิธีเพื่อรองรับข้อความ เซลล์ควรเติมเต็มความกว้างของมุมมองคอลเลกชันและปรับความสูงให้เหมาะสม เซลล์จะมีขนาดตามอำเภอใจและยังทำให้เกิดข้อขัดข้องเมื่อขนาดเซลล์ใหญ่กว่ามิติที่เลื่อนไม่ได้ของมุมมองคอลเลกชัน iOS 8 แนะนำวิธีการsystemLayoutSizeFittingSize: withHorizontalFittingPriority: verticalFittingPriority:สำหรับแต่ละเซลล์ในมุมมองคอลเลกชันเค้าโครงเรียกใช้เมธอดนี้บนเซลล์โดยส่งผ่านขนาดโดยประมาณ สิ่งที่สมเหตุสมผลสำหรับฉันคือการแทนที่วิธีนี้บนเซลล์ส่งผ่านขนาดที่กำหนดและตั้งค่าข้อ จำกัด แนวนอนเป็นที่ต้องการและลำดับความสำคัญต่ำสำหรับข้อ จำกัด แนวตั้ง ด้วยวิธีนี้ขนาดแนวนอนจะถูกกำหนดให้เป็นค่าที่ตั้งไว้ในเค้าโครงและขนาดแนวตั้งสามารถยืดหยุ่นได้ สิ่งนี้: - (UICollectionViewLayoutAttributes *)preferredLayoutAttributesFittingAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes { UICollectionViewLayoutAttributes *attributes = [super preferredLayoutAttributesFittingAttributes:layoutAttributes]; attributes.size = [self systemLayoutSizeFittingSize:layoutAttributes.size withHorizontalFittingPriority:UILayoutPriorityRequired verticalFittingPriority:UILayoutPriorityFittingSizeLevel]; return attributes; } อย่างไรก็ตามขนาดที่ให้กลับโดยวิธีนี้เป็นเรื่องแปลกอย่างสิ้นเชิง เอกสารเกี่ยวกับวิธีนี้ไม่ชัดเจนสำหรับฉันและกล่าวถึงโดยใช้ค่าคงUILayoutFittingCompressedSize UILayoutFittingExpandedSizeที่ซึ่งเป็นเพียงแค่ขนาดศูนย์และค่าที่ค่อนข้างใหญ่ เป็นsizeพารามิเตอร์ของวิธีนี้จริงๆเพียงวิธีการที่จะผ่านในสองคงที่? ไม่มีวิธีใดที่จะบรรลุพฤติกรรมที่ฉันคาดหวังว่าจะได้รับความสูงที่เหมาะสมกับขนาดที่กำหนด? …

21
การเพจ UICollection ดูตามเซลล์ไม่ใช่หน้าจอ
ฉันUICollectionViewใช้การเลื่อนในแนวนอนและมี 2 เซลล์เคียงข้างกันเสมอต่อทั้งหน้าจอ ฉันต้องการการเลื่อนเพื่อหยุดที่จุดเริ่มต้นของเซลล์ เมื่อเปิดใช้งานเพจมุมมองคอลเลคชันจะเลื่อนทั้งเพจซึ่งเป็น 2 เซลล์พร้อมกันจากนั้นจะหยุด ฉันต้องการเปิดใช้งานการเลื่อนตามเซลล์เดียวหรือเลื่อนตามเซลล์หลายเซลล์โดยหยุดที่ขอบของเซลล์ ฉันพยายามคลาสย่อยUICollectionViewFlowLayoutและใช้วิธีการtargetContentOffsetForProposedContentOffsetนี้ แต่จนถึงตอนนี้ฉันทำได้เพียงทำลายมุมมองคอลเลคชันของฉันและมันก็หยุดเลื่อน มีวิธีที่ง่ายกว่าในการบรรลุสิ่งนี้หรือไม่อย่างไรหรือฉันจำเป็นต้องใช้วิธีการทั้งหมดของUICollectionViewFlowLayoutคลาสย่อยจริงๆ ขอบคุณ.

20
วิธีการตั้งค่าความกว้างและความสูง UICollectionViewCell โดยทางโปรแกรม
ฉันกำลังพยายามใช้ไฟล์CollectionView. เมื่อฉันใช้ Autolayout เซลล์ของฉันจะไม่เปลี่ยนขนาด แต่จะอยู่ในแนวเดียวกัน ตอนนี้ฉันอยากจะเปลี่ยนขนาดเป็นเช่น //var size = CGSize(width: self.view.frame.width/10, height: self.view.frame.width/10) ฉันลองตั้งค่าในไฟล์ CellForItemAtIndexPath collectionCell.size = size มันไม่ได้ผล มีวิธีที่จะบรรลุนี้หรือไม่? แก้ไข : ดูเหมือนว่าคำตอบจะเปลี่ยนความกว้างและความสูง CollectionView ของฉันเท่านั้นเอง มีความขัดแย้งในข้อ จำกัด หรือไม่? มีความคิดเกี่ยวกับเรื่องนี้ไหม

3
วิธีการตั้งค่า UICollectionViewDelegateFlowLayout?
UIViewController รักษาการอ้างอิงถึง UICollectionView คอนโทรลเลอร์ควรแก้ไขเค้าโครงโฟลว์ที่มีอยู่แล้วภายในโดยใช้ UICollectionViewDelegateFlowLayout การตั้งค่าแหล่งข้อมูลของมุมมองเป็นเรื่องง่าย: MyViewController.m - (void)viewDidLoad { self.collectionView.dataSource = self; } แต่ฉันจะตั้งค่าคอนโทรลเลอร์ให้เป็นเค้าโครงโฟลว์ผู้รับมอบสิทธิ์ของมุมมองได้อย่างไร - (void)viewDidLoad { self.collectionView.dataSource= self; // self.collectionView.??? = self; } ฉันพยายามแล้ว: - (void)viewDidLoad { self.collectionView.dataSource= self; self.collectionView.collectionViewLayout = self; } แต่ฉันได้รับข้อผิดพลาด: "กำหนดประเภทตัวชี้ที่ใช้ร่วมกันไม่ได้ ... " ไฟล์ส่วนหัวของคอลเลกชันมีลักษณะดังนี้: MyViewController.h @interface MyViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>

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