标签: uicollectionviewlayout

如何设置单元格间距和UICollectionView - UICollectionViewFlowLayout大小比例?

我想加入UICollectionViewViewController了,我需要有"每行" 3个细胞无细胞之间的空格(它应该看起来像一个网格).单元格宽度应该是屏幕尺寸的三分之一,所以我认为layout.item宽度应该相同.但后来我明白了:

layout.itemSize width = screenSize.width/3

如果我减小那个尺寸(例如78像素),那就更好了,但是行中的第三个单元格不是完全可见的,我仍然有那个空白区域(顶部和底部,左侧和右侧).

在此输入图像描述

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 = UICollectionViewFlowLayout()
        layout.sectionInset = UIEdgeInsets(top: 20, left: 0, bottom: 10, right: 0)
        layout.itemSize = CGSize(width: screenWidth / 3, height: …
Run Code Online (Sandbox Code Playgroud)

uicollectionview uicollectionviewcell uicollectionviewlayout swift

122
推荐指数
6
解决办法
15万
查看次数

按单元格而不是屏幕分页UICollectionView

我有UICollectionView水平滚动,并且每个屏幕总共有2个单元格并排.我需要滚动才能在单元格的开头停止.启用分页后,集合视图会滚动整个页面,一次是2个单元格,然后停止.

我需要启用单个单元格的滚动,或者在单元格的边缘停止滚动多个单元格.

我试图子类化UICollectionViewFlowLayout并实现该方法targetContentOffsetForProposedContentOffset,但到目前为止我只能破坏我的集合视图并停止滚动.有没有更简单的方法来实现这个以及如何,或者我真的需要实现UICollectionViewFlowLayout子类的所有方法?谢谢.

objective-c ios uicollectionview uicollectionviewlayout

98
推荐指数
11
解决办法
8万
查看次数

在UICollectionView中左对齐单元格

我在我的项目中使用UICollectionView,其中一行中有多个不同宽度的单元格.根据:https: //developer.apple.com/library/content/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/UsingtheFlowLayout/UsingtheFlowLayout.html

它使用相同的填充将细胞扩散到整个线上.这种情况按预期发生,除了我想左对齐它们,并硬编码填充宽度.

我想我需要继承UICollectionViewFlowLayout,但是在线阅读了一些教程等之后,我似乎并不知道这是如何工作的.

objective-c ios uicollectionview uicollectionviewlayout

78
推荐指数
14
解决办法
4万
查看次数

iOS 10错误:UICollectionView接收到具有不存在的索引路径的单元格的布局属性

在iOS 10的设备上运行我的应用程序我收到此错误:

UICollectionView接收具有不存在的索引路径的单元格的布局属性

在iOS 8和9中工作正常.我一直在研究,我发现这与集合视图布局无效有关.我试图实施该解决方案但没有成功,所以我想请求直接帮助.这是我的层次结构视图:

->Table view 
    ->Each cell of table is a custom collection view [GitHub Repo][1]
        ->Each item of collection view has another collection view
Run Code Online (Sandbox Code Playgroud)

我试过的是插入

    [self.collectionView.collectionViewLayout invalidateLayout];
Run Code Online (Sandbox Code Playgroud)

在里面

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
Run Code Online (Sandbox Code Playgroud)

两个集合视图.

我也尝试在重新加载数据之前使布局无效,不起作用......

有人能给我一些指示吗?

ios uicollectionview uicollectionviewlayout ios10

63
推荐指数
5
解决办法
2万
查看次数

UICollectionView布局问题

我正在使用UICollectionView流程布局.我也为此做了一个习惯UICollectionViewCell.但是在运行项目时,控制台继续抛出这个错误 -

UICollectionView未定义的行为是因为:项目高度必须小于UICollectionViewCell减去该部分高度的顶部和底部值.

我确保细胞的大小是正确的

有没有人能够解决这个问题.提前致谢.

关心Nitesh

ios uicollectionview uicollectionviewlayout

61
推荐指数
5
解决办法
5万
查看次数

UICollectionView - 水平滚动,水平布局?

我有一个UIScrollView图标网格.如果你想象一下iOS Springboard的布局,你就会非常接近正确.它有一个水平的分页滚动(就像Springboard一样).但是,看起来布局并不完全正确.好像是从上到下布置物品.因此,由于要显示的项目数,我的最后一列只有2行.我宁愿让最后一页上的最后一行有2个项目,就像你在Springboard中看到的那样.

如何通过UICollectionView及其相关课程来实现这一目标?我必须写一个自定义UICollectionViewFlowLayout

layout ios uicollectionview uicollectionviewlayout

57
推荐指数
10
解决办法
15万
查看次数

动态大小UICollectionView单元格

在此输入图像描述

1)如何实现如图所示UICollectionView

2)我尝试了-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath方法并传递了不同的大小,但它在单元格之间留下了空间.我可以清空这些空间吗?我希望每个细胞都有不同的高度和宽度

当前输出: 在此输入图像描述.

objective-c ios uicollectionview uicollectionviewcell uicollectionviewlayout

54
推荐指数
3
解决办法
6万
查看次数

在UICollectionView上从右向左对齐

这是一个非常直截了当的问题,但是我无法在SO上找到明确的答案(如果我错过了,请纠正我).

基本上,我的问题是:是否可以UICollectionView从右到左而不是从左到右对齐行内容?

在我的研究中,我看到了建议子类化的答案UICollectionViewFlowLayout,但我还没有找到一个为右对齐创建一个例子的例子.

我的目标是设置2个集合视图,如下所示:

例

任何帮助是极大的赞赏!

objective-c right-to-left ios uicollectionview uicollectionviewlayout

53
推荐指数
10
解决办法
3万
查看次数

当数据源只有1个项目时,UICollectionView不会反弹

我有一个带有自定义UICollectionViewFlowLayout的UICollectionView.它水平滚动,一次只显示一个项目(全高).我有pagingEnabled = YES所以它坚持页面.

UICollectionView显示特定日期内的照片.我最初有按钮来改变当天+/- 1天,但我认为如果用户可以通过第一张或最后一张图像(超过预定阈值)拉动收集视图以改变那一天,那将是整洁的.我使用UIScrollView委托方法实现了它,如果集合视图中有2个或更多项,它的效果很好......

这很难描述,但如果只有一个项目,则不允许我将项目拉过它的界限.IE没有反弹.

我想有这种行为,但我需要先解决这个问题.我想如果我删除了pagingEnabled = YES并使用了targetContentOffsetForProposedContentOffset:proposedContentOffset:withScrollingVelocity,那我可以让它工作但我真的很喜欢分页启用的快速行为.(它们是相互排斥的).

有什么想法吗?

iphone uiscrollviewdelegate ios uicollectionview uicollectionviewlayout

50
推荐指数
2
解决办法
1万
查看次数

什么是'UIView-Encapsulated-Layout-Width'约束?

我一直得到'无法同时满足约束'的例外(Xcode 5,iOS 7,设备和模拟器),其中列表中的一个约束是这样的:

"<NSLayoutConstraint:0x165b23d0 'UIView-Encapsulated-Layout-Width'
H:[StoryPlayerCell:0x165affc0(0)]>"
Run Code Online (Sandbox Code Playgroud)

我自己没有设置这个约束.它也不是NSAutoresizingMaskLayoutConstraint.但是它来自哪里?我怎么能摆脱它呢?

我不知道.我'UIView-Encapsulated-Layout-Width'在Apple的文档中找不到任何相关内容.即便是谷歌搜索也没有任何回报.

有什么建议?

PS:我在UICollectionView一个自定义子类中使用这个单元格UICollectionViewFlowLayout.也许这'Encapsulated-Layout'部分与此有关?

ios autolayout uicollectionview nslayoutconstraint uicollectionviewlayout

48
推荐指数
2
解决办法
1万
查看次数