相关疑难解决方法(0)

如何检测UIScrollView何时完成滚动

UIScrollViewDelegate有两个委托方法scrollViewDidScroll:,scrollViewDidEndScrollingAnimation:但这些方法都不能告诉你滚动完成的时间.scrollViewDidScroll只通知您滚动视图确实滚动而不是滚动完成.

scrollViewDidEndScrollingAnimation如果您以编程方式移动滚动视图而不是用户滚动,则另一种方法似乎只会触发.

有没有人知道滚动视图完成滚动时检测的方案?

iphone uiscrollview ios

140
推荐指数
9
解决办法
11万
查看次数

TableView Cell视频自动播放

我做了什么: -

我已经添加了在单元格完全可见时播放视频的代码,当我向下或向上滚动时,它会再次重新加载tableview并再次播放视频.但是,我的要求是不同的.

我真正想要的是:

我想播放视频,直到完全可见的向后或向前的单元格.当用户向下滚动或向上滚动时,它不会影响直到完全可见的向后或向前单元格.

设计

Table Cell Layout Description
-> Video Table Cell (Fix height 393) 
    -> Content View
    -> Main view - (as per Content view of Table view Cell)
        -> Title View (0, 0, MainView.width, 57)
        -> Video View (0, 57, MainView.width, 200);
        -> Description View (0, 257, MainView.width, 136) 
Run Code Online (Sandbox Code Playgroud)

编码:

VideoTableCell.h

#import <UIKit/UIKit.h>

#import <AVFoundation/AVFoundation.h>



@interface VideoTableCell : UITableViewCell

@property (strong, nonatomic) IBOutlet UIView *viewForVideo;

@property (strong, nonatomic) IBOutlet UIImageView *imgThumb;

@property (strong, nonatomic) IBOutlet UIButton …
Run Code Online (Sandbox Code Playgroud)

objective-c uitableview uiscrollview tableviewcell ios

18
推荐指数
2
解决办法
6466
查看次数

在uitableview单元中播放视频

我正在尝试设置一个可以播放视频的UITableView。许多在此使用MPMoviePlayer(以前做题播放视频到UITableView的,在SWIFT播放视频的UITableView,播放视频从UITableView的),现在已不建议在iOS版9为数不多的以使用过AVFoundation(什么我使用),是这样的:当UITableViewCell完全可见并且是我从中获取大部分代码的地方时,播放视频。这是我的代码,位于cellForRowAtIndexPath内部:

 VideoCell *videoCell = (VideoCell *)[self.tableView dequeueReusableCellWithIdentifier:@"VideoCell"];

        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
        NSURL *url = [[NSURL alloc] initWithString:urlString];

        dispatch_async(queue, ^{
        videoCell.item = [AVPlayerItem playerItemWithURL:url];

            dispatch_sync(dispatch_get_main_queue(), ^{
                videoCell.player = [[AVPlayer alloc] initWithPlayerItem:videoCell.item];
                videoCell.player.actionAtItemEnd = AVPlayerActionAtItemEndNone;

                AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:videoCell.player];
                playerLayer.frame = CGRectMake(0, 0, videoCell.contentView.frame.size.width, videoCell.contentView.frame.size.height);
                [videoCell.contentView.layer addSublayer:playerLayer];
                playerLayer.videoGravity = AVLayerVideoGravityResize;
                [videoCell.player play];

            });
        });


        return videoCell;
Run Code Online (Sandbox Code Playgroud)

据我了解,在播放视频之前,我需要异步下载视频。我以前异步下载图像,其中的“下载”部分始终涉及转换NSURL-> NSData-> UIImage。然后,当您拥有UIImage时,就可以在单元格中显示它了,因此可以调出主队列和dispatch_async并执行单元格。在主队列上。

在这里,我有一个NSURL,但是我不太明白这里的哪些步骤应该在主队列中,哪些应该不在主线程中。我尝试了前面提到的SO问题中提出的建议,但到目前为止它没有用。表格单元格刚刚加载,视频从不播放。我只看到第一帧。有时它的前1秒会播放,但随后会缓冲,不会播放。我正在使用一个只有1个对象的表视图,因此只有1个视频要播放,但仍然没有播放。

我在做什么错,有人可以帮助我确切说明哪些部分需要在主线程上,哪些需要关闭?我在顶部提到的线程中的响应者说,“那里有很多教程”,但是在扫描google时我没有看到任何内容。“异步”和“ iOS”这两个词几乎总是会获得有关图片下载而非视频的搜索结果。但是,如果有任何教程,那么很高兴看到它。

谢谢

avfoundation uitableview ios

5
推荐指数
1
解决办法
5117
查看次数