【问题标题】:Display Image or AutoPlaying Video like Instagram feed显示图像或自动播放视频,如 Instagram 提要
【发布时间】:2020-03-12 12:44:49
【问题描述】:

我想创建像 Instagram 这样的提要,当我打开帖子或显示帖子(图片)时,我可以在其中显示自动播放视频。

如何使用 collectionView 实现这一点,并且只有一个单元格用于视频和图像?

【问题讨论】:

    标签: ios swift video instagram


    【解决方案1】:

    你可以试试这个演示或代码自动播放视频,如 instagram

    https://stackoverflow.com/a/42029030/12729079

    【讨论】:

    • 虽然这可能会解决 OP 的问题,但这更适合作为评论或对Close -> Duplicate Of 的投票。 ...评论How to Answer
    【解决方案2】:

    您可以使用collectionView:willDisplayCell:forItemAtIndexPath: 跟踪即将在屏幕上显示的单元格,使用collectionView:didEndDisplayingCell:forItemAtIndexPath: 跟踪即将删除的单元格。

    然后使用 collectionView.convert 计算哪些单元格当前在屏幕上最多,然后在该单元格上自动播放视频。当使用scrollViewDidScroll 检测到用户滚动并且屏幕上出现更多新单元格时更新自动播放。

    我们可以有一个这样的 post 结构:

    struct post {
      videoURL: String?
      imageURL: String?
    }
    

    其中包含视频的帖子的 imageURL 值为 nil,反之亦然。获取帖子时,您可以将它们放入数组中。

    然后您可以查看您的数据,并使用func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 来确定在数据数组的某个索引处显示哪种UICollectionViewCell

    【讨论】:

    • 但是我如何根据帖子的内容在一个视图(collectionView 单元格)上显示图像和视频?
    • 制作两个不同的单元格,一个带有 UIImageView,一个带有 AVPlayer?然后根据 indexPath 和你拥有的数据,决定使用哪一个。
    • 我的数据是动态的,我不能根据索引路径设置单元格。我必须只使用一个单元格并使其动态化。但我不确定怎么做?
    • 是的,动态数据,但您必须以某种方式存储数据,对吧?可能在一个列表中,随着用户滚动并获取更多数据,您会增加其大小。你可以有一个带有可选图像和视频 url 的数据结构,如果图像 url 为 nil,则显示视频单元格,如果视频 url 为 nil,则显示一个图像单元格。
    • 很抱歉打扰你,但我仍然不确定如何使用两个单元格,你能分享一些代码吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 2015-03-26
    • 2016-02-08
    • 1970-01-01
    相关资源
    最近更新 更多