我刚开始学习UICollectionViews。 我想知道如果有人知道如何指定一个collectionview中的列数。 默认设置为3(iPhone /人像)。 我已经看了文档,似乎无法find一个简洁的答案。
我试图添加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 additional setup after loading the view, typically from a nib let layout: UICollectionViewFlowLayout = […]
我在界面生成器中创build了一个自定义的UICollectionViewCell,将它绑定到类的视图上,然后当我想使用string并设置一个string到标签上时,标签有一个零值。 override func viewDidLoad() { super.viewDidLoad() // Register cell classes self.collectionView.registerClass(LeftMenuCollectionViewCell.self, forCellWithReuseIdentifier: "ls") } override func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell! { var cell: LeftMenuCollectionViewCell cell = collectionView.dequeueReusableCellWithReuseIdentifier("ls", forIndexPath: indexPath) as LeftMenuCollectionViewCell println(cell.label) // <- this is nil, why?? cell.label.text = "asd" return cell } 和子types的单元格: class LeftMenuCollectionViewCell: UICollectionViewCell { @IBOutlet weak var […]
我正在使用UICollectionView与UICollectionViewFlowLayout 。 我通过设置每个单元格的大小 collectionView:layout:sizeForItemAtIndexPath: 从纵向切换到横向时,我想调整每个单元格的大小以完全适合CollectionView的大小,而不在单元格之间留下填充空间。 问题: 1)如何改变旋转事件后的单元格大小? 2)甚至更好,如何使单元格始终适合屏幕的整个大小的布局?
我正在尝试自动调整UICollectionViewCells与自动布局的工作,但我似乎无法让单元格的大小自己的内容。 我很难理解单元格的大小是如何从单元格内容的内容更新的。 这是我试过的设置: 在contentView中使用UITextView自定义UICollectionViewCell。 滚动的UITextView被禁用。 contentView的水平约束是:“H:| [_textView(320)]”,即UITextView固定在单元格的左侧,宽度为320。 contentView的垂直约束是:“V:| -0 – [_ textView]”,即UITextView固定在单元格的顶部。 UITextView有一个高度约束设置为一个常量,UITextView报告将适合文本。 以下是将单元格背景设置为红色并将UITextView背景设置为蓝色的样子: 我把这个项目放在GitHub上。
我正在使用Xcode 6 Beta 3,iOS 8 SDK。 使用Swift构build目标iOS 7.0。 请参阅下面的截图一步一步的问题。 在Storyboard中有一个UICollectionView。 1原型UICollectionViewCell在中间包含1个标签(没有自动调整规则)。 紫色的背景是标记一个contentView,它是由我猜测的Cell在运行时生成的。 该视图将根据我的UICollectionViewLayoutDelegate最终resize,但不会在iOS 7上。请注意,我正在使用Xcode 6,并且问题仅发生在iOS 7上。 当我在iOS 8上构build应用程序时,一切都可以。 注:紫色是contentView ,蓝色是我的UIButton圆angular。 但是,在iOS 7中,Cell内部的所有子视图突然缩小到(0,0,50,50)的框架,并且不再符合我的Autoresizing规则。 我认为这是在iOS 8 SDK或Swift或Xcode的错误? 更新1:这个问题在官方的Xcode 6.0.1中依然存在! 最好的解决方法就像KoCMoHaBTa通过在单元格的cellForItem中设置框架(你必须inheritance你的单元格)。 事实certificate,这是iOS 8 SDK和iOS 7之间的不兼容(请检查ecotax下面引用的Apple的答案)。 更新2:将此代码粘贴到您的cellForItem的开头,事情应该没问题: /** Xcode 6 on iOS 7 hot fix **/ cell.contentView.frame = cell.bounds; cell.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; /** End of Xcode 6 […]
发生了什么 目前我有一个应用程序在UITableView中使用两个UICollectionViews 。 这样我创build一个像应用程序的脉冲新闻看起来。 我的问题是有时候第六和第十一行会完全消失,留下应该是单元格的空白处。 我真的不介意,如果所有的细胞都是这样的(这样我可以假设我没有正确地做事),但事情是,正在发生那些具体的事情。 我的理论 第6行和第11行是我开始滚动时出现的行,所以默认情况下我能看到5个单元格,当我做第一个水平滚动时,第六个出现(有时为空白)。 我拥有的 我现在唯一做的是这样的: [self.collectionView registerNib:[UINib nibWithNibName:CELL_NIB_NAME bundle:nil] forCellWithReuseIdentifier:CELL_IDENTIFIER]; 在viewDidLoad 。 而在细胞的创造上: – (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { MyCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CELL_IDENTIFIER forIndexPath:indexPath]; NSMutableDictionary *dictionary = [self.DataSource objectAtIndex:[indexPath row]]; [cell buildViewWithDictionary:dictionary withReferenceParent:self.referenceViewController]; return cell; } 所以在我的低估在这里没有什么奇特的。 我虽然在数据源(一个虚拟的JSON文件)有错误,但有时它工作正常,单元格显示,所以我想从那个部分是好的。 所以我的“问题”:有谁知道发生了什么事? 我真的不想说这是从iOS的错误,但我想不出别的。 编辑1.0 令人惊叹的是这种方法 -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath; 正在从indexPath […]
我有一个简单的UICollectionView与具有单个UITextView的单元格。 UITextView被限制在单元格的边缘,所以它们应该保持与单元格大小相同的大小。 我遇到的问题是,由于某些原因,当我通过collectionView:layout:sizeForItemAtIndexPath:指定单元格大小时,这些约束不起作用。 我在Storyboard中将单元格大小设置为320×50。 如果我用sizeForItemAtIndexPath:返回大小为单元大小的2倍的大小,UITextView保持相同的高度,尽pipe我设置了约束。 我正在使用Xcode 6 GM。 我的视图控制器代码是: @implementation TestViewController – (void)viewDidLoad { [super viewDidLoad]; self.collectionView.delegate = self; self.collectionView.dataSource = self; } – (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; UICollectionViewCell *c = [self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]]; NSLog(@"%f", c.frame.size.height); UITextView *tv = (UITextView *)[c viewWithTag:9]; NSLog(@"%f", tv.frame.size.height); } – (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { return 1; } – […]
我正在使用UICollectionView来显示可能有或没有图像的数据的项目。 我使用的方式是检查图像的URL不是null,然后将一个ImageView添加到单元格。 – (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { if (question.picture != (id)[NSNull null]) { //add AsyncImageView to cell imageView.contentMode = UIViewContentModeScaleAspectFill; imageView.clipsToBounds = YES; imageView.tag = IMAGE_VIEW_TAG; [cell addSubview:imageView]; [[AsyncImageLoader sharedLoader] cancelLoadingImagesForTarget:imageView]; imageView.imageURL = [NSURL URLWithString:question.picture]; } } 对于那些没有图像的单元格,单元格应该如下所示: https : //dl.dropboxusercontent.com/u/5753236/Stackoverflow/good.png 但是,他们中的一些仍然会添加一个带有裁剪图像的ImageView,导致如下所示: https : //dl.dropboxusercontent.com/u/5753236/Stackoverflow/bad.png 我试过使用SDWebImage,但仍然没有解决问题。 另一个问题是,当我向下滚动UICollectionView ,会看到一些图像显示为上面显示的图像,然后在加载完成后切换到正确的图像,我不知道是什么导致了问题。 请帮我解决这两个问题,我真的很感激任何帮助。
我有一个UICollectionView的UICollectionView。 它会像大多数时间一样工作,但是现在,其中一个单元格不能正确包装。 例如,第三行第一个“列”中应该打开的单元格,如果实际上在第二行后面,并且只有一个空白空间(参见下图),那么该单元格应该位于第三行的第一个“列”中。 所有你能看到的这个胭脂细胞都是左边的(其余的被切除),它应该是空的。 这并不一致, 它并不总是相同的行。 一旦发生,我可以向上滚动,然后返回,单元格将自己修复。 或者,当我按下单元格(通过按压将我带到下一个视图)然后popup时,我会看到单元格位置不正确,然后跳转到正确的位置。 滚动速度似乎更容易重现问题。 当我慢慢地滚动时,我仍然可以不时地看到单元错误的位置,然后马上跳到正确的位置。 当我添加节插入时,问题就开始了。 以前,我的单元格几乎与收集边界齐平(很less或没有插入),我没有注意到这个问题。 但是这意味着收集视图的右侧和左侧是空的。 即,不能滚动。 另外,滚动条并不是在右边。 我可以在模拟器和iPad 3上发生问题。 我猜这个问题正在发生,因为左侧和右侧部分插入…但如果价值是错误的,那么我会期望行为是一致的。 我不知道这可能是苹果的错误吗? 或者,这可能是由于内嵌物或类似物的堆积造成的。 任何解决scheme/解决方法,赞赏。 跟进 :我已经在下面用尼克的这个答案超过6个月, 12个月,现在没有问题(如果人们想知道这个答案是否有漏洞 – 我还没有find任何问题)。 做得好尼克。