在 iOS 中为视频幻灯片而不是图像使用 Open Cover Flow
Posted
技术标签:
【中文标题】在 iOS 中为视频幻灯片而不是图像使用 Open Cover Flow【英文标题】:Using an Open Cover Flow for video slides instead of images in iOS 【发布时间】:2011-12-23 00:08:33 【问题描述】:您能否在 ios 中拥有多个视频而不是图像的封面流?用户会看到带有播放按钮而不是图像的每个视频开头的静止画面,有点像 Youtube。
因此,它不是像 iOS 中当前的 Cover Flow 那样的一组图像,而是一组视频。或者视频和图片混淆了。
【问题讨论】:
是的,你可以,在计算机上几乎一切皆有可能:) 【参考方案1】:iCarousel 是我在这种情况下使用的框架。它是一个 CoverFlow 替换库,因为 CoverFlow 是 iOS 下未记录的 API。请参阅 GitHub 网站上的说明并阅读下面的说明。
与许多其他“CoverFlow”库不同,iCarousel 可以处理任何类型的视图,而不仅仅是图像,因此它非常适合在您的应用中以流畅且令人印象深刻的方式呈现分页数据。
我自己没有尝试过使用视频对象,但从文档和这个来看,您似乎可以传入视频对象或缩略图,单击时加载视频。在性能方面,缩略图会更有意义。下面是自述文件中的源代码,并解释了如何使用它。
iCarousel 遵循 Apple 对数据驱动视图的约定 提供两个协议接口,iCarouselDataSource 和 iCarouselDelegate。 iCarouselDataSource 协议具有以下内容 所需的方法(注意:对于 Mac OS,用 NSView 代替 UIView 方法参数):
- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel;
返回轮播中项目(视图)的数量。
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view;
返回要在轮播中指定索引处显示的视图。 reusingView 参数的工作方式类似于 UIPickerView,其中先前显示在轮播中的视图被传递回要回收的方法。如果这个参数为 nil,你可以设置它的属性并返回它而不是创建一个新的视图实例,这会稍微提高性能。与 UITableView 不同,没有用于区分不同轮播视图类型的重用标识符,因此如果您的轮播包含多个不同的视图类型,那么您应该忽略此参数并在每次调用该方法时返回一个新视图。您应该确保每次调用 carousel:viewForPageAtIndex: 方法时,它要么返回 reusingView 或全新的视图实例,而不是维护您自己的可回收视图池,因为为不同的轮播项索引返回同一视图的多个副本可能导致轮播显示问题。
因此,对于第二种方法,您可以实现一个UIImageView
,它是视频的缩略图,并为每个视频每次重复使用一个视图。这样做的好处是您可以混合图像和视频,仅在需要全屏显示图像/视频时进行区分。它就像查询类一样简单,然后根据类设置要显示的不同视图。信息够吗?如果有不清楚的地方请告诉我。
【讨论】:
我想要求一个工作示例会有点多。但如果你有任何我将不胜感激。但这已经足够了。 :) 他们也有很好的示例项目 :) 很高兴你发现它很有用。 @DylanGattey 是否可以将其实现为菜单,即在选择图像时,它会将您带到故事板中的不同视图? 大概。我不知道代码是如何工作的,但你可以点击输入,使用 id 或其他东西,并显示一个可重用的视图,你可以在其中创建不同的视图【参考方案2】:为什么不使用缩略图来表示视频?按下图像时,视频会加载。这将使应用程序使用更少的处理能力,并允许与当前的 iOS 封面流方法集成。
如果您真的想制作视频封面流,您可能需要编写代码从头开始创建它。我认为这是可能的。
【讨论】:
以上是关于在 iOS 中为视频幻灯片而不是图像使用 Open Cover Flow的主要内容,如果未能解决你的问题,请参考以下文章
ios 的 UIImageView 中显示之前的视频(AVPlayer)而不是 Image