测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | BSD |
发布最后发布 | 2015年6月 |
由 Michal Zaborowski 维护。
INSElectronicProgramGuideLayout 由 Michał Zaborowski 撰写,用于 inspace.io
INSElectronicProgramGuideLayout
是用于显示电子节目指南的 UICollectionViewLayout
子类。
示例项目创建了未来三天频道数据的样本数据,它使用 LoremIpsum 框架填充 EPG 数据。要运行,请在 Example 目录中的 INSElectronicProgramGuideLayout.xcworkspace
内构建并运行 Example 目标。
如果您更改了您的 INSElectronicProgramGuideLayout
的内容,请确保调用 invalidateLayoutCache
方法。这将清除您的 INSElectronicProgramGuideLayout
的内部缓存,允许正确重新填充数据。
INSElectronicProgramGuideLayout
有十一种不同的元素,您应该为这些元素注册 UICollectionReusableView
和 UICollectionViewCell
类。它们是:
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;
不要这样做。这不能正确工作,并且是一个“痛苦的包裹”。
INSElectronicProgramGuideLayout
要求 iOS 7.x 及以上版本。
如果你觉得这个有用,我会很高兴看到一条感谢的推文。
特别感谢Eric Horacek,他最初编写了MSCollectionViewCalendarLayout
,我从他那里学到了很多东西。
INSElectronicProgramGuideLayout
支持Storyboard。
INSElectronicProgramGuideLayout
使用 ARC。
版权所有 (c) 2014 inspace.io。保留所有权利。
它是一种开源软件,受标准的2条条款BSD许可证的保护。这意味着你必须提及 inspace.io 作为此代码的原始作者,并在你的应用程序中复制LICENSE文本。
你可以以35欧元的价格购买一个 非归属许可,这样你就不需要包含LICENSE文本。
我们还接受对你可能需要的特定增强的一揽子赞助。请 通过电子邮件联系我们 以了解更多信息。