首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当滚动的UITableView上重新出现UIView时,动画停止

是因为UITableView的重用机制导致的。

UITableView使用了重用机制来提高性能和内存使用效率。当滚动时,UITableView会将滚出屏幕的UITableViewCell放入重用队列中,以便在需要时重新使用。当滚动停止并且需要显示新的UITableViewCell时,UITableView会从重用队列中取出一个可用的UITableViewCell,并将其添加到可见区域。

当一个UIView被添加到UITableViewCell中,并且该UITableViewCell被滚出屏幕并放入重用队列后,UIView上的动画会停止。这是因为当UITableViewCell被重用时,UIView的状态也会被重置,包括动画的状态。因此,当UITableViewCell重新出现时,动画会停止。

为了解决这个问题,可以在UITableViewCell的重用方法中重新启动动画。可以在UITableViewCell的prepareForReuse方法中停止动画,并在cellForRowAtIndexPath方法中重新启动动画。具体实现如下:

代码语言:txt
复制
class CustomTableViewCell: UITableViewCell {
    var customView: UIView!
    
    override func prepareForReuse() {
        super.prepareForReuse()
        // 停止动画
        customView.layer.removeAllAnimations()
    }
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomTableViewCell
    
    // 配置UITableViewCell
    
    // 重新启动动画
    cell.customView.startAnimating()
    
    return cell
}

这样,在UITableViewCell重新出现时,动画就会继续播放。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

阅读器多种翻页设计与实现

1 : 0; // 经验数值,多次尝试得出 另外一个问题是手势在进行到一半时如果APP切入后台,动画出现暂停情况。...,添加view过多时候会占用内存; UITableView用cell重复利用规避上面的局限,但是存在新问题:数据源(排版数据)变化时,需要频繁调用reloadData,造成性能瓶颈;同时reload...B是我们创建第一个vc,大小和UIScrollViewsize一样大;当我们向下滑动,我们创建vcA放在B上面; 当我们滑到vcA完全展示时候,vcB已经滑动到屏幕外面(红色为窗口大小);...同理,我们可以处理向上滑动情况。至此,我们可以不依赖UITableView完成无限视图滚动,同时避免各类touch事件处理和加速度计算。 ?...0,使得跨页滑动不流畅;使用-setContentOffset:可以解决这个问题,仅仅改变offset,并且继承原来速度接着运动; Q: -scrollViewDidScroll:方法怎么会出现递归循环调用

3.3K10
  • iOS开发常用之网络

    TabBarController,支持自定义TabBarItem样式或添加动画 隐藏与显示 SlideTapBar - 滚动栏菜单,向上滚动隐藏tabbar,向下滚动马上显示tabbar。...一个用于统一管理导航栏转场以及推或者弹出时候使动画效果更加顺滑通用库,并且同时支持竖屏和横屏。...MediumScrollFullScreen - Medium可扩展滚动页面,上下滚动,全屏显示内容,并自然消隐上下菜单。...iCarousel - iCarousel是一个类,它继承于UIView。用于简化实现各种类型旋转木马(分页滚动视图),无限轮播,iOS开发之多图片无缝滚动组件封装与使用。...KYAnimatedPageControl - 除了滚动视图PageControl会以动画形式一起移动,点击目标页还可快速定位。支持两种样式:粘性小球和旋转方块。

    23.6K10

    列表滑动展开隐藏头部HeaderView

    对于按钮移动动画就没有去花时间还原了,毕竟这里主要是为了实现滚动压缩、展开Header,动画不讨论。 ? 实现思路 如图所示: ?...首先在要将该界面分成两部分:一个ScrollHeader,一个UITableView。 ScrollHeader占据屏幕上方,高度为展开后高度 UITableView占据整个屏幕,这样可以完全滚动。...另一种效果是把topView与bottomView上下连接在一起,也就是没有覆盖关系,然后bottomView向上滑topView从屏幕外滑入屏幕内。这个读者可以尝试着实现一下。...由于我ScrollHeader继承UIView,所以为了处理滑动,为其设置一个UIScrollView @property (nonatomic, strong) UIScrollView *headerScrollView...; 这个属性作用就是获得UITableView对应scrollView,因为UITableView本身是继承UIScrollView,所以在初始化ScrollHeader时候可以这么写: MyScrollHeader

    3.4K20

    【IOS开发基础系列】Table View开发专题

    320高度是44         因为在iOS5时候, 默认Cell就是320宽(那阵屏幕就是那么宽,然后高度是44) 现在是在layoutSubViews 重新绘制这个cell宽度和高度,所以才是屏幕宽度...你会发现即使做到了上述几点,图像出现时,仍然会有短暂停顿现象。...做到前几点后,你table view滚动应该足够流畅了,不过你仍可能让用户感到不爽。常见现象就是在更新数据,整个界面卡住不动,完全不响应用户请求。...出现这种现象原因就是主线程执行了耗时很长函数或方法,在其执行完毕前,无法绘制屏幕和响应用户请求。其中最常见就是网络请求了,它通常都需要花费数秒时间,而你不应该让用户等待那么久。...例如每次载入50条信息,那就可以在滚动到倒数第10条以内,加载更多信息: - (void) tableView: (UITableView *)tableView willDisplayCell: (

    34420

    一个多UITableview左右滑动简单解决方案

    前言 本文源自实际开发中需求,核心要求有几个: 1、多个UITableview要支持左右滑动; 2、点击Tab也要有UITableview滑动切换效果; 3、每个UITableview单独下拉刷新和拉加载...UIScrollView直接添加到self.view属性,如果automaticallyAdjustsScrollViewInsets为YES,会调整UIScrollViewinset以适应status...于是把UINavigationControllerautomaticallyAdjustsScrollViewInsets属性也设置为NO。 理论应该不至于再出现偏差现象。...这时候,有的人可能会采用一种解决方案,比如在viewWillAppear时候,把offset改回去; 或者另一种解决方案:用UIView把UIScrollView装起来,再把UIView添加到VC.view...但是,并不能满足解决问题,还是想找到根本原因。经过一番思考,觉得问题可能出现在rootTabBarController

    2.7K71

    MJRefresh源码剖析与学习

    ,回来要重新刷新一下) [self setNeedsDisplay]; } } } 上面做了一个动画效果,多加了一个willRefresh状态,我理解是为了防止...3、滚动偏移值变化以及状态改变 //scrollViewcontentOffset发生改变时候调用 - (void)scrollViewContentOffsetDidChange:(NSDictionary...1、在MJRefreshStateHeader添加了箭头和菊花 2、布局这两种样式View,且在状态切换更改样式切换 1、圈圈(菊花)和箭头布局 - (void)placeSubviews...,及他们动画效果,如箭头朝上朝下,和菊花转与不转 四、MJRefreshGifHeader 1、加载不同状态对应动画图片 2、设置不同状态对应动画时间 1、懒加载 #pragma...= MJRefreshStateIdle || images.count == 0) return; //状态不是闲置或者图片为空,则直接返回 // 停止动画 [self.gifView

    1.6K51

    iOS开发中行高灵活可变UITableView性能优化

    以iOS9为例,一行cell要展示在屏幕,至少要执行5遍TableViewheightForRowAtIndexPath方法: TableView配置部分: ① TableView视图即将展现在屏幕...上面列举5中拉取cell高度场景中,TableView配置部分只会在TableView第一次展现在屏幕出现,但是其拉取是所有行行高数据,如果表视图有100行或者更多,这将是一个十分耗费性能过程...TableViewCell配置部分,只有当cell将要出现在屏幕才会出现,并且只拉取当前行行高,这两种场景会在用户滑动TableView不断被执行,并且根据UITableView布局cell原理...执行TableViewreloadData方法进行界面刷新,系统先会把所有行行高数据拉取一遍,之后和UITableViewCell配置部分场景一直,会拉取即将出现在屏幕cell行高数据。...至于为何UITableView在进行配置也需要拉取所有的行高数据,我猜想其为了进行视图一些初始化操作,例如表视图右侧滚动宽度和所占比例等。

    2K20

    Ios常用第三方框架(一)

    MJRefresh - 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者拉刷新功能。可以自定义上下拉刷新文字说明。具体使用看“使用方法”。...ZLSwiftRefresh - swift下拉刷新/拉加载更多,支持自定义动画,集成简单,兼容UITableView/CollectionView/ScrollView/WebView。...ReplaceAnimation.swift - 基于 @ZeeYoung欧阳哲 同学创意下拉刷新动画实现。值得称赞还有额外增加了“取消及滚动”效果支持。...PullToBounce - 下拉刷新动画 for UIScrollView。 WaterDropRefresh - 仿Path 水滴下拉刷新效果 还有视差滚动。...UUColorSwitch - Switch 开关动画效果,打开开关,Switch可实现平滑渲染过渡到父视图效果。

    5.4K31

    iOS实现TableView中Cell出现时弹出动画

    发现一个简单方式可以让TableView变得非常炫酷,语言描述太苍白,直接看图吧: 在任何有cell先出现在屏幕时候都会有这么一个效果,非常流畅,也非常有意思(忍不住不停地把玩。。)。...实现起来也非常简单,iOS原生支持,几行代码就可以搞定,在众多tableview代理方法中,我们利用下面这个方法: -(void)tableView:(UITableView *)tableView...willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 这个方法是在cell即将显示对indexpath...位置cell进行操作,我们就在这个方法里面加上动画代码,这个动画说白了就是把cell从一个小变成正常大小,使用UIView简单动画就可以实现(关于UIView简单动画可以看我这篇博客:iOS基础动画教程...代码如下: //给cell添加动画 -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath

    1.3K10

    高效学习iOS —— Stroke和路径动画

    这是要完成动画: 先添加需要代码,这里需要将storyboardViewController换成 TableViewController,将Under Top Bars 和 Under Bottom...view高度 * 0.8 一半,这里lineDashPattern是创建路径描边版本应用虚线图案(NSNumbers数组)。...这里需要根据滚动高度来进行判断进度,先声明一个progressCGFloat属性。...var progress: CGFloat = 0.0 在scrollViewDidScroll 里面算出向上滚动高度,然后处理本身view大小和1比较取最小值,然后根据得到progress设置...这里改变了scrollViewcontentInset来显示这个view,再为ovalShapeLayer添加上strokeStart和strokeEnd动画,然后为airplaneLayer添加上绕圆位置变化以及图片角度变化

    1.8K20

    你可能需要为你 APP 适配 iOS 11

    本文介绍iOS11中在UI方面做了哪些更新,有些更新可以为用户提供更加完美的体验,但也有的可能会给目前APP带来异常bug 前言 前几天发现在做APP在 iOS11 系统动画有异常,在其他系统设备都是正常...(command+向左箭头让模拟器横屏) 横屏,在iPhone,tab图标较小,tab bar较小,这样垂直空间可多放置内容。...值,当你viewController改变了它safeAreaInsets值,有两种方式获取到回调: UIView.safeAreaInsetsDidChange() UIViewController.viewSafeAreaInsetsDidChange...UIScrollView and UITableView新特性 Scroll Views 如果有一些文本位于UI滚动视图内部,并包含在导航控制器中,现在一般navigationContollers会传入一个...,cell高度较小时,会只显示image,不显示title,cell高度够大,会同时显示image和title。

    1.7K60

    iOS开源小项目-WSL

    WSL是一款拥有 音乐播放,新闻,壁纸,画板,简易地图,计时器等等功能小项目,是我自己早期学习做着玩,并没上架;UI是自己设计,所以挺吃藕,粗糙,没做适配,是在6尺寸下开发 ,还希望不要嫌弃了...(gif有点大,有的压缩失真了,,,,) 0 、启动界面 第一次安装运行会有APP介绍页面,对于启动动画,是一个小视频,根据当前系统时间,会有春夏秋冬四种不同动画面。...动画.gif 动画主要代码:UITableView代理方法 -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell...array[0]; //设置anchorPoint cell.layer.anchorPoint = CGPointMake(0, 0.5); //为了防止cell视图移动,重新把...; 2017/6/7更新:由于接口数据发生了改变,可能现在音乐播放器这块儿没法看到效果,我把锁屏效果和歌词解析,滚动显示功能单独抽出来又写了一篇文章和demo,感兴趣可以去我这篇文章看看 iOS 音乐播放器之锁屏效果

    2.7K60

    浅汇-iOS UI布局

    CGRectMake(a*NEWX, b, c*NEWX, d)  这里我们以宽度缩放比为整体缩放比,就可以完美适配更种机型,不管苹果以后出什么机型,这样设置后就可以保证在各种机型屏幕出现变形情况...使用了这么久,       对于父试图是  Button / UITextFeild等非UIView直接子类,布局其子视图,这里面的约束是不生效。...2、实现了UIView内子视图自动布局; 3、实现了UIScrollView内容高度根据内部子视图内容高度动态设置; 4、实现了一个UITableView有多个不同Cell时候,所有cell高度自适应...view间距,需要传递2个参数:(UIView)参照view 和 (CGFloat)间距数值  `这个参照View是他父试图,leftSpaceToView就表示当前这个试图左边到父试图左边距离...动画中试图自动布局刷新(SDAutoLayout在动画中并不友好) [UIView animateWithDuration:0.8 animations:^{ self.view0.sd_layout

    2.1K20

    小问题记录

    ,不要写全路径,因为软件更新或者重新安装沙盒路径会变 更新流程是这样:更新,先在新路径里安装新程序,然后把旧程序文件夹里配置文件之类文件拷贝到新路径里去,然后删除旧程序 所以,如果数据库里保存是绝对路径...、调用这个方法view2、view2所有子view都会调用layoutSubviews setFrame:只有在view设置frame且尺寸参数有不同情况下调用 滑动UIScrollView,scrollView...和其父view会调用 旋转屏幕会在viewController根view调用 重新改变view大小,其父view会调用 drawInRect: withAttributes:参数怎么写 UIFont...切换动画 只要提供View初识状态和结束状态,然后交给showAnimation来做即可 -(void)showAnimation { [self.view addSubview:geopointView...滑入动画 reference [UIView transitionFromView:viewToReplace toView:replacementView

    3.4K21

    六天完成一个简单iOS App - 第六天

    setFrame中对cell位置和宽高同时做修改时,建议使用一个UIView当做载体,heardView添加UIViewUIView在添加cell,此时cellsetFrame不会对UIView...但是这里存在两个问题 此时最热评论虽然没有了,但是那部分会被空出来,这是因为我们之前对cell高度进行了缓存,设置cell高度,发现cellHeight不为零,则直接返回高度,不会重新计算。...因此我们这里将cellHeight设置为0,设置cellcellHeight就会重新计算cellHeight。...tableView顶部实现 点击状态栏时候,tableView会自动滚动到最上方,其实scrollView有scrollsToTop这个属性,并且默认就是YES,但是有个局限性,只有在有一个屏幕滚动视图时候才会生效...,scrollView中有一个以上滚动视图,将会失效。

    1.3K50
    领券