INSElectronicProgramGuideLayout 1.1.1

INSElectronicProgramGuideLayout 1.1.1

测试已测试
语言语言 Obj-CObjective C
许可证 BSD
发布最后发布2015年6月

Michal Zaborowski 维护。



  • inspace.io

简介

INSElectronicProgramGuideLayoutMichał Zaborowski 撰写,用于 inspace.io

INSElectronicProgramGuideLayout

INSElectronicProgramGuideLayout 是用于显示电子节目指南的 UICollectionViewLayout 子类。

示例

示例项目创建了未来三天频道数据的样本数据,它使用 LoremIpsum 框架填充 EPG 数据。要运行,请在 Example 目录中的 INSElectronicProgramGuideLayout.xcworkspace 内构建并运行 Example 目标。

使用方法

无效化布局

如果您更改了您的 INSElectronicProgramGuideLayout 的内容,请确保调用 invalidateLayoutCache 方法。这将清除您的 INSElectronicProgramGuideLayout 的内部缓存,允许正确重新填充数据。

集合视图元素

INSElectronicProgramGuideLayout 有十一种不同的元素,您应该为这些元素注册 UICollectionReusableViewUICollectionViewCell 类。它们是:

  • EPG 单元格 (UICollectionViewCell) – 代表您的活动。
  • 频道列标题 (UICollectionReusableView) 元素类型 (INSEPGLayoutElementKindSectionHeader) – 包含频道文本,居顶部。
  • 小时行标题 (UICollectionReusableView) 元素类型 (INSEPGLayoutElementKindHourHeader) – 包含小时文本,居中。
  • 半小时行标题 (UICollectionReusableView) 元素类型 (INSEPGLayoutElementKindHalfHourHeader) – 包含半小时文本,居中。
  • 频道列标题背景 (UICollectionReusableView) 元素类型 (INSEPGLayoutElementKindSectionHeaderBackground) – 频道列标题的背景。
  • 小时行标题背景 (U ICollectionView_REUSEableView) 元素类型 (INSEPGLayoutElementKindHourHeaderBackground) – 小时行标题的背景。
  • 当前时间指示器 (UICollectionReusableView) 元素类型 (INSEPGLayoutElementKindCurrentTimeIndicator) – 在小时行标题上显示,与当前时间对齐。
  • 当前时间垂直网格线 (UICollectionReusableView) 元素类型 (INSEPGLayoutElementKindCurrentTimeIndicatorVerticalGridline) —— 显示在单元格下方,与当前小时对齐。
  • 垂直小时网格线 (U ICollectionReusableView) 元素类型 ( INSEPGLayoutElementKindVerticalGridline) —— 显示在单元格下方,与对应的行小时标题对齐。
  • 垂直半小时网格线 (U ICollectionReusableView) 元素类型 (INSEPGLayoutElementKindHalfHourVerticalGridline) —— 显示在单元格下方,与对应的十五分钟行标题对齐。
  • 水平网格线 (U ICollectionReusableView) 元素类型 (INSEPGLayoutElementKindHorizontalGridline) —— 显示在单元格下方,与对应的频道列标题对齐。
  • 浮动覆盖 (U ICollectionReusableView) 元素类型 (INSEPGLayoutElementKindFloatingItemOverlay) —— 显示在单元格上方,与内容对齐。

接口和自定义

@interface INSElectronicProgramGuideLayout : UICollectionViewLayout

/**
*  Vertical space between sections (channels)
*/
@property (nonatomic, assign) CGFloat sectionGap;

/**
*  Section size
*/
@property (nonatomic, assign) CGFloat sectionHeight;
@property (nonatomic, assign) CGFloat sectionHeaderWidth;

/**
*  Current time indicator and gridline size
*/
@property (nonatomic, assign) CGSize currentTimeIndicatorSize;
@property (nonatomic, assign) CGFloat currentTimeVerticalGridlineWidth;

/**
*  Gridlines size
*/
@property (nonatomic, assign) CGFloat horizontalGridlineHeight;
@property (nonatomic, assign) CGFloat verticalGridlineWidth;

/**
*  Hour width and hour header height
*/
@property (nonatomic, assign) CGFloat hourWidth;
@property (nonatomic, assign) CGFloat hourHeaderHeight;

/**
*  Default size to use for floating headers. If the delegate does not implement the collectionView:layout:sizeForFloatingItemOverlayAtIndexPath: method, the flow layout uses the value in this property to set the size of each floating header.
*/
@property (nonatomic, assign) CGSize floatingItemOverlaySize;

/**
* Horizontal space between floating header and section.
Default value is 10.0
*/
@property (nonatomic, assign) CGFloat floatingItemOffsetFromSection;

/**
* Distances between the border and the layout content view.
* Default value is UIEdgeInsetsMake(0, 0, 0, 0)
*/
@property (nonatomic, assign) UIEdgeInsets contentMargin;

/**
*  Margin between cells.
*  Default value is UIEdgeInsetsMake(0, 0, 0, 10)
*/
@property (nonatomic, assign) UIEdgeInsets cellMargin;

@property (nonatomic, assign) INSElectronicProgramGuideLayoutType headerLayoutType;

/**
*  Set to YES if you want to resize sticky background headers when UICollectionView bounces.
*/
@property (nonatomic, assign) BOOL shouldResizeStickyHeaders;

/**
*  Set to YES if you want to use floting overlay to each cell. If set to YES you have to register supplementaryViewOfKind INSEPGLayoutElementKindFloatingItemOverlay.
*/
@property (nonatomic, assign) BOOL shouldUseFloatingItemOverlay;

我可以调用 performBatchUpdates:completion: 来使内容动画化吗?

不要这样做。这不能正确工作,并且是一个“痛苦的包裹”。

需求

INSElectronicProgramGuideLayout 要求 iOS 7.x 及以上版本。

特别感谢

如果你觉得这个有用,我会很高兴看到一条感谢的推文。

特别感谢Eric Horacek,他最初编写了MSCollectionViewCalendarLayout,我从他那里学到了很多东西。

Storyboard

INSElectronicProgramGuideLayout 支持Storyboard。

ARC

INSElectronicProgramGuideLayout 使用 ARC。

联系方式

inspace.io

Twitter

许可证

版权所有 (c) 2014 inspace.io。保留所有权利。

它是一种开源软件,受标准的2条条款BSD许可证的保护。这意味着你必须提及 inspace.io 作为此代码的原始作者,并在你的应用程序中复制LICENSE文本。

你可以以35欧元的价格购买一个 非归属许可,这样你就不需要包含LICENSE文本。

我们还接受对你可能需要的特定增强的一揽子赞助。请 通过电子邮件联系我们 以了解更多信息。