KKGridView 0.6.8.2

KKGridView 0.6.8.2

测试测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2014年12月

未声明 维护。



KKGridView 0.6.8.2

  • By
  • Kolin Krewinkel, Giulio Petek, Jonathan Sterling, Kyle Hickinson, Matthias Tretter 和 Peter Steinberger
KKGridView

弃用

在 iOS 6 中,苹果已经创建了一个针对 KKGridView 尝试解决的问题的官方解决方案。更多信息请参考 WWDC 2012 的第 219 场会议。

概述

性能高效的 iOS 网格视图 (MIT 许可证)。 要求:您必须使用支持 自动引用计数 的编译器构建 KKGridView。我们知道这最初可能很刺耳,但我们坚信,现在要求这样做将为未来提供更好的服务。此外,转向 ARC 大大提高了 KKGridView 的性能。请记住,您的项目无需使用 ARC 即可包含 KKGridView

贡献

如果您看到某些您不喜欢的内容,您始终可以将其作为问题提交。但如果我们能在您的心中找到它,我们将非常感谢如果您可以自己修复它并向我们发送一个拉取请求。我们承诺不会咬人!

当前问题

项目的许多功能、错误和缺失项目都在问题部分。目前,在插入后存在定位问题。我们最初打算在公开发布之前修复这些问题,但后来决定现在发布并允许外部贡献。除此之外,编辑和选择是需要工作的唯一其他事情。

动机

KKGridView 于 2011 年 7 月创建,用于在我正在工作的几个应用程序中使用。当我发现这将是既困难又耗时的事情时,我寻求了 Giulio PetekJonathan Sterling 的帮助。此外,我们聘请了 Kyle HickinsonMatthias Tretter,最近还聘请了 Peter Steinberger。我们所有人都在现存的网格视图组件上感到沮丧;在这个想法的驱使下,我们着手创建迄今为止 iOS 上最佳的网格视图组件。

目标

当我们开始构建时,我们都有几点共同的事情我们知道我们必须专注于。

  • 性能 — 最坏情况下 55+ FPS。
  • UITableView 相似性 — 努力实现尽可能多的直接替换。
  • 功能完整性 — 如上所述,匹配最新版本的 UITableView 功能;添加任何其他有价值的内容。
  • 稳固的代码库 — 我们不想用到无法扩展并且充斥着混乱代码的东西。

项目集成

  • 在Xcode中,创建与现有 *.xcodeproj 相同目录下的新工作空间。
  • 将现有的Xcode项目拖入。
  • 找到KKGridView的副本,将 KKGridView.xcodeproj 拖入工作空间中,让它保持在层次结构的最上方,就像原始项目一样。
  • 在原始项目的构建阶段中,将你的项目与libKKGridView.a链接。
  • 现在,简单地像导入Apple框架一样导入KKGridView。
#import <KKGridView/KKGridView.h>
  • 你可以在任何需要的地方这样做,尽管我们认为最佳做法是直接在prefix (.pch)文件中导入。

使用方法

KKGridViewController就像UITableViewController一样,可以自动为你创建网格视图。仅需创建子类并进行自定义。

作为替代,你可以执行自定义实例化,如下所示。

首先,实例化一个网格视图实例。使用指定的初始化器和黄河 _gridView 常量:

_gridView = [[KKGridView alloc] initWithFrame:self.view.bounds dataSource:self delegate:self];

现在,你可以设置默认的 UIScrollViewUIView 属性,因为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一样。虽然我们对您来说更容易实现,因为KKIndexPathNSIndexPath工作方式完全相同,只是将-row替换为-indexKKGridViewCell就像UITableViewCell一样,旨在被继承。

- (KKGridViewCell *)gridView:(KKGridView *)gridView cellForItemAtIndexPath:(KKIndexPath *)indexPath
{
  KKGridViewCell *cell = [KKGridViewCell cellForGridView:gridView];
  cell.backgroundColor = [UIColor lightGrayColor];
  return cell;
}

虽然没有必需的代理方法,所有在UITableView中实现的方法将很快在KKGridView中可用。