MMFlowView是一个专门用于支持“覆盖流”效果的类,它旨在像IKImageBrowserView一样使用。它支持所有图像类型(URL、NSImage、图标、QuartzComposerCompositions、QTMovie),就像IKImageBrowserView。如果您熟悉IKImageBrowserView,则可以直接开始使用MMFlowView。
MMFlowView使用异步图像加载并缓存图像内容,尽量减少内存使用。它支持通过数据源或Cocoa绑定来加载图像。它是可访问性的,具有拖放和快速查看预览功能。它使用CoreAnimation提供平滑快速动画。
Markus Mueller,[email protected]
MMFlowView在MIT许可下可用。查看LICENSE文件以获取更多信息。
要使用数据源方法加载图像,您的数据项需要实现MMFlowViewItem协议(类似于IKImageBrowserItem)
- (id)imageItemRepresentation;
要显示的图像,如果没有图像可以显示则可以返回nil。此方法经常被调用。
- (id)imageItemRepresentationType;
指定图像表示的字符串。该字符串可以是以下任何一个常量
kMMFlowViewURLRepresentationType
kMMFlowViewCGImageRepresentationType
kMMFlowViewPDFPageRepresentationType
kMMFlowViewPathRepresentationType
kMMFlowViewNSImageRepresentationType
kMMFlowViewCGImageSourceRepresentationType
kMMFlowViewNSDataRepresentationType
kMMFlowViewNSBitmapRepresentationType
kMMFlowViewQTMovieRepresentationType
kMMFlowViewQTMoviePathRepresentationType
kMMFlowViewQCCompositionRepresentationType
kMMFlowViewQCCompositionPathRepresentationType
kMMFlowViewQuickLookPathRepresentationType
kMMFlowViewIconRefPathRepresentationType
kMMFlowViewIconRefRepresentationType
描述数据源项的类型。
- (NSString*)imageItemUID;
唯一标识数据源项的字符串。FlowView使用此标识符将数据源项与其缓存关联。
- (NSString*)imageItemTitle;
图像的显示标题。
MMFlowView通过提供两个协议接口MMFlowViewDataSource和MMFlowViewDelegate遵循苹果的以数据驱动视图的约定。MMFlowViewDataSource协议有如下必需的方法
- (NSUInteger)numberOfItemsInFlowView:(MMFlowView*)aFlowView;
获取流视图中的图像数量。
- (id<MMFlowViewItem>)flowView:(MMFlowView*)aFlowView itemAtIndex:(NSUInteger)anIndex;
返回与指定索引相对应的流视图中的项的对象。返回的对象必须实现MMFlowViewItem协议所需的方法。
有关更多详细信息,请参阅MMFlowView.h头文件中的注释。
要使用Cocoa绑定加载图像,绑定数组控制器的项目必须符合MMFlowViewItem协议或必须使用以下属性设置 required-infomation所需信息的关键路径
@property (nonatomic,copy) NSString *imageRepresentationKeyPath;
观察集合中项的图像表示的关键路径,默认为imageItemRepresentation,有关详细信息请参阅MMFlowViewItem协议。
@property (nonatomic,copy) NSString *imageRepresentationTypeKeyPath;
观察集合中项的图像表示类型的关键路径,默认为imageItemRepresentationType,有关详细信息请查阅MMFlowViewItem协议。
@property (nonatomic,copy) NSString *imageUIDKeyPath;
观察集合中项的图像uid的关键路径,默认为imageItemUID,有关详细信息请查阅MMFlowViewItem协议。
@property (nonatomic,copy) NSString *imageTitleKeyPath;
观察集合中项的图像标题的关键路径,默认为imageItemTitle,有关详细信息请查阅MMFlowViewItem协议。
如果您未设置这些关键路径,则您的图像项需要支持MMFlowViewItem协议。然后MMFlowView公开一个NSContentArrayBinding,该绑定必须绑定到一个NSArrayControllers arrangedObjects
[ self.flowView bind:NSContentArrayBinding
toObject:self.itemArrayController
withKeyPath:@"arrangedObjects"
options:nil ];
然后MMFlowView自动观察您的数据源。
请查看MMFlowViewDemo项目,它展示了如何使用拖拽和快速查看预览面板。