请添加图片描述
如上图,是一个竖视频页面,可以上下滑动,当当前视频从屏幕中滑出的时候,需要将播放页面移除,并暂停播放

这里需要注意的是,偶尔的情况下,当前屏幕中的cell也会执行这个方法,所以这里需要添加一个判断,判断cell是否在屏幕中

- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
     这里是修复快速滑动的时候展示上一个播放画面的问题
     在cell 滚出屏幕的时候将播放画面
     移除,因为不将播放画面移除的话,在快速滚动的情况下,
     刚刚滚动到一个cell的时候,会有一瞬间展示的上一个视频的播放画面
    CGRect rect = [self.tableView convertRect:cell.frame toView:self.view];
     CGRectEqualToRect(rect, self.view.bounds) ,发现偶发的情况会有当前正在展示的cell也会执行这个方法
     导致将要开始播放的时候停止播放,这里添加一个判断cell 是否在屏幕中
    if (self.currentIndex == indexPath.row && !CGRectEqualToRect(rect, self.view.bounds)) {
        [self.player.currentPlayerManager.view removeFromSuperview];
        [self.controlView pause];
        self.currentIndex = -10;
                    需求如上图,是一个竖视频页面,可以上下滑动,当当前视频从屏幕中滑出的时候,需要将播放页面移除,并暂停播放代码这里需要注意的是,偶尔的情况下,当前屏幕中的cell也会执行这个方法,所以这里需要添加一个判断,判断cell是否在屏幕中- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{    
				
#pragma mark---tableview的cell,头部视图,尾部视图显示顺序 //cell将要显示 -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ NSLog(@"将要...
1、将cell的高度设置为屏幕高度,发现首次显示时连续调用了16个cell的- tableView:cellForRowAtIndexPath:,而每一次调用cellForRowAtIndexPath之后会接着调用- tableView:willDisplayCell:forRowAtIndexPath:,最后调用15次- tableView:didEndDisplayingCell:forRowAtIndexPath:表示除了第一个cell其余cell都移出屏幕。 2、将UITableView的estim
NSIndexPath * optionIndexPath; scrollViewDidScroll 里判断 -(void)scrollViewDidScroll:(UIScrollView *)scrollView{ if (optionIndexPath != nil) { //标记的cell 在tableView的坐标值
先说一下刚开始的实现思路吧,一开始使用的Xib+AutoLayout,以及iOS8之后的自动估算高度。也就是设置 self.ableView.estimatedRowHeight = xxx; self.tableView.rowHeight = UITableViewAutomaticDimension; 选择这种实现方式非常适合快速开发,快速的拖拽控件就可以很快的看见效果。 如果能这么顺利
UICollectionView是iOS6之后引入的一个新的UI控件,它和UITableView有着诸多的相似之处,其许多代理方法都十分类似。简单来说,UICollectionView是比UITbleView更加强大的一个UI控件,有如下几个方面: 1、支持水平和垂直两种方向的布局 2、通过layout配置方式进行布局 3、类似于TableViewcell特性外,C...
系统判断方法失效: 在你的项目,当需要判断系统版本的话,不要使用下面的方法: #define isiOS10 ([[[[UIDevice currentDevice] systemVersion] substringToIndex:1] intValue]>=10) 它会永远返回NO,substringToIndex:1在iOS 10 会被检测成 iOS 1了, 应该使用下面的这些方法
轮播图可以用UIScrollView或UICollectionView来实现。 用UIScrollView实现轮播图的思路是: 给图片数组的第一个元素(下标0)添加最后一张图片,之后再往末尾添加第一张图片,这样数组就增加了2张图片,第一个元素和倒数第二个元素是最后一张图片,最后一个元素和第二个元素是第一张图片。 根据图片数组的个数创建UIImageView个数,每个UIImageView占据屏幕宽度。首次展示图片时,scrollView定位到(contentOffset)数组的第二个元素,展示第一张
今天在推特上看到一篇关于性能优化不错的文章,是前苹果开发人员写的,翻译了一下与大家分享,原地址iOS Performance tips you probably didn’t know (from an ex-Apple engineer) 作为开发人员,良好的性能对于使我们的用户感到惊喜和喜悦是无价的。iOS用户具有很高的标准,如果你的应用程序反应很慢或在内存压力下崩溃,他们将停止使用它,或者...
一、UICollectionView基础: 1.简介: UICollectionView是iOS6之后引入的一个新的UI控件,在目前的iOS开发,使用非常广泛。它和UITableView都继承自UIScrollView,但是它比UITableView更加强大,可以根据需要自定义各种各样复杂的布局。 它和UITableView十分相似,并且很多代理方法都十分类,具体的可以看看苹果官方的文档:UICollectionView - Apple Developer 2.特点: (1)系统自带的流水布局支持水平和垂
iOS 获取屏幕刷新率可以通过Core Animation框架的CADisplayLink类实现。CADisplayLink是一个定时器类,可以监听屏幕的刷新频率,并在每一帧结束时发送回调。 首先需要创建一个CADisplayLink对象,并添加到主运行循环: CADisplayLink *displayLink = [UIScreen mainScreen].maximumFramesPerSecond == 0 ? [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkTick:)] : [UIScreen mainScreen].linkWithPreferredFramesPerSecond == 0 ? [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkTick:)] : [UIScreen mainScreen].linkWithPreferredFramesPerSecond == 60 ? [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkTick60fps:)] : [UIScreen mainScreen].linkWithPreferredFramesPerSecond == 120 ? [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkTick120fps:)] : [UIScreen mainScreen].linkWithPreferredFramesPerSecond == 90 ? [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkTick90fps:)] : nil; [displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes]; 然后实现对应的回调方法,在每帧结束时获取屏幕的刷新率: - (void)displayLinkTick:(CADisplayLink *)link { CGFloat frameInterval = link.duration/60.0; screenRefreshRate = (int)(1.0/frameInterval); 最后需要注意的是,在iOS 10之后,为了省电和减少GPU负担,屏幕刷新率可能会动态调整,因此获取到的屏幕刷新率并不一定是恒定的。
LibreSSL SSL_read: error:02FFF03C:system library:func(4095):Operation timed out, errno 60 10309 ld: file not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ 但是在编译打包的时候出现这个报错是什么原因/Users/lzkj/.jenkins/workspace/charging-IOS/LZChangePower/Pods/Pods.xcodeproj: warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 12.0 to 17.0.99. (in target 'TZImagePickerController' from project 'Pods') iOS 使用陀螺仪实现裸眼3d效果 没明白 图里是怎么体现3D的