Deprecated: Grid view library for iOS.
当前访问频次受限,请登录后继续访问
###已弃用 在 iOS 6 中,Apple 已针对 KKGridView 试图解决的问题推出了官方解决方案。有关更多信息,请参阅 2012 年 WWDC 的 Session 219。
###概述
高性能 iOS 网格视图(MIT 许可证)。要求:您需要使用支持*自动引用计数(ARC)*的编译器来构建 KKGridView。我们知道一开始这可能不太方便,但我们坚信现在就要求这一点更有利于未来发展。此外,迁移到 ARC 极大地提升了 KKGridView 的性能。请记住,您的项目本身不使用 ARC 也可以集成 KKGridView。
###贡献 如果您发现任何问题,欢迎随时提交 issue。但如果您愿意,我们将非常感谢您能自行修复问题并向我们发送 pull request。我们保证不会拒绝!
##当前问题
该项目的大部分功能、错误和待完善项都在 Issues 部分。目前,插入操作后存在布局问题。我们最初计划在公开发布前修复这些问题,但后来决定现在发布,以便接受外部贡献。除此之外,编辑和选择功能是目前唯一需要完善的部分。
##开发动机
KKGridView 创建于 2011 年 7 月,用于我当时正在开发的几个应用。当我发现实现这一功能既困难又耗时后,我寻求了 Giulio Petek 和 Jonathan Sterling 的帮助。此外,我们还邀请了 Kyle Hickinson、Matthias Tretter,以及最近加入的 Peter Steinberger。我们都对现有的网格视图组件感到不满;因此,我们着手打造当时 iOS 平台上最出色的网格视图组件。
##开发目标
在开始构建时,我们都明确了几个需要重点关注的共同目标。
- 性能 — 在最糟糕的情况下也能达到 55+ FPS。
- 与
UITableView的相似性 — 力求做到尽可能无缝集成。 - 功能完整性 — 如前所述,匹配最新
UITableView实现的功能;并添加其他有价值的功能。 - 稳健的代码库 — 我们不希望构建一个难以扩展且代码混乱的组件。
##项目集成
- 在 Xcode 中,在与现有 *.xcodeproj 相同的目录下创建一个新的工作区。
- 将您现有的 Xcode 项目拖入工作区。
- 找到您的 KKGridView 副本,将 KKGridView.xcodeproj 拖入工作区,使其位于层次结构的顶部,就像您的原始项目一样。
- 在原始项目的“Build Phases”部分,将您的项目与 libKKGridView.a 链接。
- 现在,只需像导入 Apple 框架一样导入 KKGridView:
#import <KKGridView/KKGridView.h>
- 你可以在任何需要的地方这样做,但我们认为最好直接在你的前缀(.pch)文件中导入。
使用方法
KKGridViewController 与 UITableViewController 类似,可以自动为你实例化一个网格视图。只需将其子类化并进行自定义即可。
或者,也可以执行自定义实例化,如下所示。
首先,实例化一个网格视图实例。使用指定的初始化器和 _gridView 实例变量:
_gridView = [[KKGridView alloc] initWithFrame:self.view.bounds dataSource:self delegate:self];
现在,您可以设置默认的 UIScrollView 和 UIView 属性,因为 KKGridView 继承自上述类。
_gridView.scrollsToTop = YES;
_gridView.backgroundColor = [UIColor darkGrayColor];
_gridView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
还必须设置度量值(未来可能会支持自动调整大小)。
_gridView.cellSize = CGSizeMake(75.f, 75.f);
_gridView.cellPadding = CGSizeMake(4.f, 4.f);
现在,可以设置头文件中提供的其他属性。
_gridView.allowsMultipleSelection = NO;
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 50.f)];
headerView.backgroundColor = [UIColor redColor];
_gridView.gridHeaderView = headerView;
[headerView release] /* For the non-ARC users amongst us */
最后,您可以将网格设置为您的视图。
self.view = _gridView;
或者,您可以将网格添加到视图层级结构中。
[self.view addSubview:_gridView];
###数据源方法:
- (NSUInteger)gridView:(KKGridView *)gridView numberOfItemsInSection:(NSUInteger)section
{
return kCellCounts[section];
}
你可以选择指定网格中所需的分区数量。(默认值为 1)
- (NSUInteger)numberOfSectionsInGridView:(KKGridView *)gridView
{
return kNumSections;
}
最后一个必需方法是返回单元格,这与 UITableView 类似。不过,我们已为你简化了操作。KKIndexPath 的工作方式与 NSIndexPath 完全相同,只是将 -row 替换为 -index。KKGridViewCell 与 UITableViewCell 一样,设计为可被子类化。*
- (KKGridViewCell *)gridView:(KKGridView *)gridView cellForItemAtIndexPath:(KKIndexPath *)indexPath
{
KKGridViewCell *cell = [KKGridViewCell cellForGridView:gridView];
cell.backgroundColor = [UIColor lightGrayColor];
return cell;
}
没有必需的委托方法,但 UITableView 中已实现的所有委托方法很快将在 KKGridView 中可用。