ios6 – UICollectionViewLayout示例

ios6 – UICollectionViewLayout示例,第1张

概述有人能指出我如何使用UICollectionViewLayout创建类似于Pinterest列布局的界面吗? 我尝试在线搜索,但看起来还没有很多例子. 1000memories“Quilt”视图类似于pinterest和开源: http://blog.1000memories.com/168-opensourcing-quilt,你可以深入了解它是如何工作的. 如果您正在寻找更概念性的概述,这里是 有人能指出我如何使用UICollectionVIEwLayout创建类似于Pinterest列布局的界面吗?

我尝试在线搜索,但看起来还没有很多例子.

解决方法 1000memorIEs“quilt”视图类似于pinterest和开源: http://blog.1000memories.com/168-opensourcing-quilt,你可以深入了解它是如何工作的.

如果您正在寻找更概念性的概述,这里是您想要做的基本概念.到目前为止,最简单的事情是,如果你只需要一个Pinterest风格的布局,就是子类UICollectionVIEwFlowLayout.你可以从这个课程中获得很多布局帮助,Pinterest风格也在其功能范围内.您只需要覆盖一个方法.

使用UICollectionVIEwFlow布局设置普通的UICollectionVIEw.一个快速的方法是:

>将UIVIEwController拖到故事板上,在其上放置一个UICollectionVIEw.设置类以匹配您的自定义类等.您可以使用委托并在此创建委托类,但严格来说,这不是实现Jinte Pinterest流程布局所必需的(您几乎肯定希望将选择责任的东西分解为尽管如此委托班级).
>存根数据源.为UICollectionVIEw(http://developer.apple.com/library/ios/#documentation/uikit/reference/UICollectionViewDataSource_protocol/Reference/Reference.html)实现数据源协议非常简单.确保在UICollectionVIEwCell上设置重用标识符.你需要:

>(NSInteger)numberOfSectionsInCollectionVIEw:(UICollectionVIEw *)collectionVIEw

>现在回来1;

>(NSInteteger)collectionVIEw:numberOfItemsInSection:

>现在硬编码,使其成为20.

> – (UICollectionVIEwCell *)collectionVIEw:cellForItemAtIndexPath:

>这是对流程布局进行子类化的地方之一,它会帮到你.你真正需要做的就是使用索引路径调用dequeueReusableCellWithReuseIDentifIEr:forIndexPath :.如果您向单元格添加了UIImageVIEw或某些标签,这将是实际分配图像,文本等的好地方.

>在vIEwController的vIEwDIDLoad中实例化一个UICollectionVIEwFlowLayout并将UICollectionVIEw的数据源设置为你的数据源并将布局设置为flowlayout.请记住,此类是UICollectionVIEwVIEwController的子类.

self.collectionVIEw.dataSource = [[YourDataSource alloc] init];self.collectionVIEw.collectionVIEwLayout = [[UICollectionVIEwFlowLayout alloc] init];

好.此时,您应该可以运行您的应用程序,并在屏幕上看到一些东西.这是一个旋风概述.如果您需要有关如何设置VIEwControllers等的更多详细信息,那么有很多可用的东西.

现在是重要的部分,Pinterest-izing流程布局.

首先,添加一个新类,它是UIVIEwControllerFlowLayout的子类.更改VIEwController的vIEwDIDLoad以实例化此类并指定为UICollectionVIEw的collectionVIEwLayout.

您需要实现的方法是 – (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect.

事情就是这样:超类几乎将为你完成所有的工作.你的代码看起来像这样:

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect{    NSArray *attributes = [super layoutAttributesForElementsInRect:rect];     [attributes enumerateObjectsUsingBlock:^(ID attr,NSUInteger IDx,BOol *stop) {    float newYCoord = [calculationMethodYouHavetoWriteFor:attr.frame];    attr.frame = CGRectMake(attr.frame.origin.x,newYCoord,attr.size.wIDth,attr.size.height];}];}

Pinterest使用固定宽度的列,你需要在计算方法中做的就是找出你所在的列(`attr.origin.x / _columnWIDth),然后从你的ivar中查找该列中的总高度保存它.不要忘记将它添加到新对象的高度并将其保存回下一遍.

流程布局超类处理:制作单元格,确定哪些单元格可见,计算内容大小,确定行方向在x方向上的排列,为单元格指定索引路径.很多垃圾.并且压倒一种方法可以让你根据自己的心愿摆弄y-pos.

总结

以上是内存溢出为你收集整理的ios6 – UICollectionViewLayout示例全部内容,希望文章能够帮你解决ios6 – UICollectionViewLayout示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1004462.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存