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

如何在TableView中使用的UIImageView扩展中再次修复来自startAnimation的UIActivityIndicatorView

在TableView中使用UIImageView扩展来修复来自startAnimation的UIActivityIndicatorView的问题,可以按照以下步骤进行:

  1. 首先,确保你已经导入了UIKit框架,因为UIImageView和UIActivityIndicatorView都属于UIKit。
  2. 创建一个UIImageView的扩展,可以在该扩展中添加修复方法。可以在你的项目中的任何一个Swift文件中添加以下代码:
代码语言:txt
复制
import UIKit

extension UIImageView {
    func fixActivityIndicatorBug() {
        for subview in self.subviews {
            if subview is UIActivityIndicatorView {
                subview.removeFromSuperview()
            }
        }
    }
}
  1. 在你的TableView的数据源方法中,当你需要使用UIImageView来显示图片时,先调用fixActivityIndicatorBug()方法来修复UIActivityIndicatorView的问题。例如,在cellForRowAt方法中:
代码语言:txt
复制
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! CustomTableViewCell
    
    // 先修复UIActivityIndicatorView的问题
    cell.imageView?.fixActivityIndicatorBug()
    
    // 设置图片
    cell.imageView?.image = UIImage(named: "your_image_name")
    
    return cell
}

这样,当你在TableView中使用UIImageView来显示图片时,就会先修复UIActivityIndicatorView的问题,然后再设置图片。

这个修复方法的原理是遍历UIImageView的子视图,如果发现子视图是UIActivityIndicatorView,则将其从父视图中移除。这样可以避免UIActivityIndicatorView在UIImageView中重复显示的问题。

推荐的腾讯云相关产品:腾讯云移动直播(https://cloud.tencent.com/product/mlvb)可以用于在移动端实时直播中使用UIImageView扩展修复UIActivityIndicatorView的问题。

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

相关·内容

【IOS 开发】基本 UI 控件详解 (UISegmentedControl | UIImageView | UIProgressView | UISlider | UIAlertView )

UISegmentedControl 控件属性 (1) Style 属性 Style 属性 :  -- Plain : 分段控件使用最普通风格; -- Bordered : 在最普通风格上添加一圈边框...UIImageView @property (strong, nonatomic) IBOutlet UIImageView *bigPicture; //小图片 UIImageView @property...可拉伸图片 (1) 可拉伸图片用法 可拉伸图片作用 : 在上述进度条, 设置 progressImage 和 trackImage 必须是可拉伸图片; (2) 可拉伸图片创建 创建可拉伸图片 : 使用...控件拖动到 OCViewController.h IBOutletConnection 属性变量上 :  (2) 代码示例 代码示例 :  -- 界面设计文件 :  -- OCViewController.h...} } - (IBAction)end:(id)sender { for(int i = 0; i < 4; i ++){ //从集合获取 UIActivityIndicatorView

2.7K40
  • 用这些 iOS 技巧让你 APP 性能更佳

    你之前可能在tableView(_:cellForRowAt:)中使用tableView.dequeueReusableCell(withIdentifier:for:)。...如果不使用可复用 tableViewCell ,我们必须为每一行创建一个新 tableViewCell,如下所示: func tableView(_ tableView: UITableView,...比较:Safari APP启动页和第一个页面 (查看大图) 启动页 storyboard 与任何其他 storyboard文件一样,除了您只能使用标准 UIKit 类, UIViewController...再次启动应用程序并检查状态是否已成功还原。 由于本节仅涵盖了状态保存和恢复基础知识,因此我推荐 Apple Inc. 上以下文章。...这很可能是因为应用程序在主线程上运行繁重计算任务。 主线程通常在 UIKit 任务(处理用户输入)和一些间隔很小轻量级任务之间交替。

    3.2K30

    浅析RunLoop原理及其应用

    但平时开发很少见到RunLoop,为何它如此神秘?本文跟大家分享一下RunLoop相关知识。...4.RunLoop应用 例如创建一个比较常见注册页面,里面用NSTimer来自处理常见验证码倒计时,每秒处理一下,如果NSTimer添加到是默认模式RunLoop这时候注册页面有一个展示注册协议...如果觉得NSTimer设置RunLoop模式很复杂可以尝试用GCDTimer用法很简便。 ? RunLoop在TableView应用(解决滑动卡顿问题)。 ?...所以这里可以再次优化,将模式改为kCFRunLoopCommonModes,这样的话滑动或者不滑动都可以加载图片渲染屏幕,而且是在不影响屏幕流畅性基础上。如以下GIF: ?...(void)didReceiveMemoryWarning { [super didReceiveMemoryWarning];} (左右滑动查看全部代码) 推荐阅读 OC观察者模式之KVO使用与思考

    94120

    实践-小效果 Ⅳ

    为倒立同等控件,设置这个UIImageViewlayermask为一个渐变图层,效果就出来了。...对于重力感应,我们需要使用iOSCoreMotion框架。其中包括加速计、陀螺仪、磁力计等。 具体参照此文 4.动态暂停按钮 ?...,这是因为cell重用机制造成,在第一篇文章中就这个问题有提到过 解决cell重用问题,在cellForRow方法,定义cellIdetifier时,将其每一行都定义为不同值,就不会出现覆盖,...自动移动.gif 之前使用如下方法一直出现抖动Bug; if (self.tableView.contentSize.height > self.tableView.frame.size.height...); [self.tableView setContentOffset:offset animated:animated]; } 最后无奈使用了如下方法,只是没有了渐变动画效果;; [self.Tb

    62320

    Swift-MVVM 简单演练(一)

    Hierarchy : 层级 将UIBarButtonItem自定义快速创建leftbarButtonItem方法扩展一下,增加一个参数isBack,默认值是false /// 字体+target...imageName == "" { startAnimation() return } /// 旋转视图动画 fileprivate func startAnimation() {...如果没有 通过网络请求加载默认.json文件 如果有 直接使用沙盒里面保存.json文件 网络请求异步加载新.json文件,等下一次用户再次启动APP时候就可以显示比较新配置文件了 在AppDelegate...代理合核心是解耦,当一个控件可以不停被复用时候就选择代理,比如TableViewDelegatedidSelectRowAt indexPath:该方法是可以在任何地方只要创建TableView...总结 使用代理传递消息是为了在控制器和视图之间解耦,让视图能够被多个控制器复用,TableView 但是,如果视图仅仅是为了封装代码,而从控制器剥离出来,并且能够确认该视图不会被其它控制器引用,

    10.3K51

    浅汇-iOS UI布局

    但是因为系统layoutSubviews 方法是默认不执行任何布局,需要使用者在页面内容确定后再次对空间Frame进行重置,牵一发而动全身重置是痛苦而繁琐。...AutoLayout(动画中使用是个弱点)      使用SDAutoLayout  不光是为了横竖屏适配(通过判断屏幕方向,重置 Frame  也可以做到),是为了TablevIewcell  ...这页面布局方式思维模式跟Frame完全不同,使用时应跳出Frame坐标布局思维模式,站在关系依赖布局思维方式上才可以达到娴熟正确使用。...,需要使用一下方法来自动布局,并且这个时候不可以再以父试图底为标准来设置其内部子视图,这是一种【从里到外】布局思路,cell自适应高度也是这种思路;平时我们思路都是一种【从外到里】思路,先确定外面的再使其自动布局里面的...:tableView];    } 使用SDAutoLayout来布局UIImageView时候,遇到圆角问题,headHeadImageV.layer.cornerRadius=40;是不会起作用

    2.1K20

    iOS开发之微信聊天页面实现

    在上篇博客(iOS开发之微信聊天工具栏封装)对微信聊天页面下方工具栏进行了封装,本篇博客中就使用之前封装工具栏来进行聊天页面的编写。...在聊天页面主要用到了TableView知识,还有如何在俩天显示我们发送表情,具体请参考之前博客:IOS开发之显示微博表情,在这儿就不做赘述啦。...(strong, nonatomic) IBOutlet UIImageView *headImageView; 6 @property (strong, nonatomic) IBOutlet UIImageView...,通过block回调把图片传到Controller,用于放大图片使用。...,通过Block,工具栏和ViewController交互,具体ToolViewBlock实现,请参考上一篇博客(iOS开发之微信聊天工具栏封装),聊天工具栏使用代码如下: 1 //实现工具栏回调

    4.2K70

    iOS开发中使用UITableView提高用户体验

    背景: 1.在使用了MJRefresh之后,当UITableView滑到底部时候需要继续上拉(比之前上拉费力)才能进行刷新。 效果图: ?...beginRefreshing]; } return cell; } 具体实现: 1.在cellForRowAtIndexPath:方法获取每个cell行数,当数据源未展示数据不够下一屏数据时候就去利用...]; } 2.在包含UITableView的当前页面去创建一个UIImageView作为当前Controller一个成员变量,记为picView,但并不添加到当前Controller上(为是利用该...UIImageView去下载图片)。...在cellForRowAtIndexPath:方法在利用当前Cell上UIImageView去下载图片同时利用picView去下载数据源还未展示cell上UIImageView上要显示图片

    97930

    Swift-MVVM 简单演练(四)

    不能使用`KVC`设置 var id: Int64 = 0 /// 用户昵称 var screen_name: String /// 用户头像地址(图),50×50像素...HQStatusListViewModel是引用着HQStatus,而HQStatusListViewModel又是被HQAViewController引用。相当于控制器还是在直接使用模型。...那么昵称和头像这类赋值就不能直接在cell完成,我们只需要将viewModel传给topView,然后在topView赋值就好了。...而在ViewModel我们自定义memberIcon是一个存储型属性,在init构造函数,直接计算出该是哪个会员图标。计算好以后,下次就可以直接使用,不再需要计算了。...先扩展模型,增加相应字段 /// 微博数据模型 class HQStatus: NSObject { /// 转发数 var reposts_count: Int = 0

    2.3K50

    Swift版本TableManager

    一、概述在OC轮子使用一个RETableviewManager轮子,核心原理是数据驱动页面,cell-item 一一对应,对UITableview页面的封装。...本人觉得项目使用效果还不错,因此写了个swift版本。TBD:目前还在持续完善... 二、做了一些优化* Item 和 cell绑定,只支持registerClass方式。...鼓励先注册,后续直接复用使用,避免新人错误。 实际项目中使用nib或xib很少,基本都是纯代码编写,因此简化(实在有需要,后续再扩展)。...cell高度,进行属性缓存,同时提供方法放到Itemopen class func calcCellHeight() -> Float { return 40.0}* cell生命周期做了调整...* 去掉原框架外部delegate 实际需要自己实现代理场景很少,即使需要,是否也失去manager功能;因此先不提供。

    39160

    OC一些编程写法--({"添加代码"}) 花括号用法

    self.tableView.tableHeaderView = ({ UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0..., 0, 0, 184.0f)]; UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 40...,这个是GNU C对C扩展语法 Xcode采用Clang编译,Clang作为GCC替代品,和GCC一样对于GNU C语法完全支持 你可能知道if(condition)后面只能根一条语句,多条语句必须用...{}阔起来,这个语法扩展即将一条(多条要用到{})语句外面加一个括号(), 这样的话你就可以在表达式应用循环、判断甚至本地变量等。...表达式()最后一行应该一个能够计算结果子表达式加上一个分号(;), 这个子表达式作为整个结构返回结果 这个扩展在代码中最常见用处在于宏定义

    80820

    Xcode 调试技巧 --常用命令和断点

    Xcode 调试技巧与我们日常开发息息相关,而这些调试技巧在我们解决Bug时,常常有事半功倍作用,经常会用到有各种断点 和 命令。...而这些调试技巧也经常会在面试问到,所以不知道就来看看吧。 ? 调试主要观看区 调试命令 在上图中,右侧绿色区域就是Log 输出区,在 Log 输出区可以使用一些命令,来辅助调试。...使用 p 命令 查看是对象,那么只会返回对象指针地址。...我们可以在调试时,动态修改变量值,这在调试想要让应用执行异常路径(执行某个else 情况)很有用。...4.异常断点 如果程序运行就崩溃,我们可以打一个异常断点,这样崩溃时就会触发断点,很容易定位到问题所在,也能看到更多崩溃相关信息,Log,函数调用栈。 ? 异常断点 ?

    3.1K40

    自学Swift之路(二)UITableView自定义和实际利用

    自定义,附带场景使用(简单demo) 创建工程什么就不说了,先看一下界面然后咱们直接开始代码: ?...6EDD4AC9-47E3-401F-91A4-2DA836439787.png Demo开始之前,我们想想应该会使用到屏幕宽高等一些常用值,在OC,咱们可以使用PCH然后宏定义,然而在Swift...,是没有宏这个概念,但是直接创建一个文件,在里面直接定义常量,别的文件也是可以访问和使用(并且不需要导入):如图创建一个common文件 ?...ImageView和一个Label,虽然数据是死,但是在Swift,另外一个类是可以直接访问另一个类变量(如果没做任何保护的话),所以我们在配置cell时候是可以直接赋值,这里就不弄了,然后我们看创建表视图那一块...学了这么几天,我发现Swift还是比较容易入手,下篇文章我会用一个小项目,本人是做室内地图SDK,这次小项目是仿我OC写SDK Demo,使用Swift和OC混编,集成百度地图SDK和自己室内

    2.3K90

    TableView优化之快速滑动下忽略加载

    = 在今天博客你可能会看到: VVeboTableViewCell加载逻辑解析 TableView代码解耦基本思路 恩,东西不多,一点一点说~ ---- VVeboTableView 其实这是...普通UIView绘制圆角时并不需要maskToBounds属性。也就是普通视图圆角对卡顿没有影响。 既然有普通就有特殊:UIImageView和UILabel以及我还没有发现=。...然后是判断needLoadArr是否包含有当前indexPath,若没有返回。继续判断当前TableView是否处于快速回到顶部过程,如果是的话也不绘制。...但是代码怎么可能不写,只是我在别的地方写过了,并且花了大把时间进行解耦,让每一个TableView都能拿来就直接使用。 那么这个解耦类我们要怎么写呢? 好,我们来新建一个文件。...,添加分割线归0方法 添加自动行高计算并缓存 cell添加xib支持 修复选择模式选中后关闭再次开启选择同一个无法选中bug 更换去除选择背景方式,解决与选择模式冲突 映射所有代理 version

    1.7K33

    RunLoop总结:RunLoop应用场景(三)滚动视图流畅性优化

    为了表现出卡顿效果,我先自己实现了一下Cell,主要示例代码: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath...这里就可以使用使用上面的方式做一次改进。...一点UITableView滑动性能优化扩展 影响UITableView滑动,有哪些因素呢? 关于这一点,人眼能识别的帧率是60左右,这也就是为什么,电脑屏幕最佳帧率是60Hz。...只会计算一次,后面再次滑到这个Cell这里,都会读取缓存高度,也即高度计算代理方法不会再执行。...所以,如果计算Cell高度这个过程过于复杂,或者某个计算使用算法耗时很长,可能会导致计算时间大于1/60,那么必然导致界面的卡顿,或不流畅。

    2.2K41

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

    代码中使用AFN来请求数据,使用MJExtension对数据进行对模型转换。...iOS-网络编程(三)AFNetworking使用 而MJExtension内部通过RunTime来进行字典转模型,与KVC不同是,RunTime字典转模型实现原理是遍历模型所有属性名,然后去字典查找...数据请求成功接下来就是子控件布局,子控件布局就是很简单九宫格布局,需要注意一点是,我们需要设置footView高度就等于最后一个子控件最大Y值,并且在tableView,cell显示完毕后...如下图: 20距离 解决方法非常简单,当设置完footView高度之后,拿到tableView重新刷新一下tableView就可以了 // 布局子控件 -(void)createSquare:(NSArray...总结 今天主要完成了我界面的搭建,主要内容CocoaPods使用以及AFN,SD,MJExtension等第三方框架简单使用tableViewfootView布局和显示,webView加载

    888110

    TableView添加背景

    iPhone SDK提供了默认几个TableView样式,但是如果想提供更个性化样式就需要自己定义。 比如添加背景 如上图样子。...其实自定义table view样子很简单,无非就是把table view和table view cell背景变成透明,然后在指定视图和cell背景图片(当然,也可以指定table view背景图片...UIScrollViewIndicatorStyleWhite]; [self.view addSubview:theTableView]; } return self; } 代码注释已经很清楚了...先设置视图背景,再设定table view背景 再看另外一断代码,设置了cell背景,注意,这里面使用了自定义cell类CustomCell - (UITableViewCell *)tableView...:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { CustomCell *cell= [[[CustomCell

    1.4K20
    领券