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

如何在重新加载视图控制器后仍然显示progressView的进度?

在重新加载视图控制器后仍然显示progressView的进度,可以通过以下步骤实现:

  1. 在视图控制器的加载方法(例如viewDidLoad)中创建一个UIProgressView对象,并将其添加到视图层级中。
  2. 在视图控制器的属性中定义一个float类型的变量,用于保存进度值。
  3. 在视图控制器的加载方法中,设置UIProgressView的进度值为上述变量的值。
  4. 在视图控制器的加载方法中,启动一个后台线程或异步任务,用于加载数据或执行其他耗时操作。
  5. 在后台线程或异步任务中,根据实际进度更新进度值变量,并使用主线程更新UIProgressView的进度值。
  6. 在视图控制器的生命周期方法(例如viewWillAppear)中,重新设置进度值,以便在重新加载视图控制器后仍然显示正确的进度。

这样,无论何时重新加载视图控制器,都会在进度条上显示正确的进度。

以下是一个示例代码:

代码语言:txt
复制
import UIKit

class ViewController: UIViewController {
    var progressView: UIProgressView!
    var progress: Float = 0.0
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        progressView = UIProgressView(progressViewStyle: .default)
        progressView.frame = CGRect(x: 50, y: 100, width: 200, height: 20)
        view.addSubview(progressView)
        
        updateProgress()
        
        DispatchQueue.global().async {
            // 模拟耗时操作
            for i in 0..<100 {
                self.progress = Float(i) / 100.0
                DispatchQueue.main.async {
                    self.updateProgress()
                }
                usleep(100000) // 模拟耗时操作的延迟
            }
        }
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        updateProgress()
    }
    
    func updateProgress() {
        progressView.progress = progress
    }
}

这个示例代码创建了一个视图控制器,在加载时创建了一个UIProgressView并添加到视图中。通过后台线程模拟耗时操作,更新进度值,并使用主线程更新进度条的显示。在视图将要出现时,重新设置进度值,以便在重新加载视图控制器后仍然显示正确的进度。

腾讯云相关产品和产品介绍链接地址:

请注意,以上产品和链接仅作为示例,实际选择和推荐的产品应根据具体需求和情况进行评估。

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

相关·内容

  • iOS AVPlayer视频播放器

    GOVVideoPlayer/GOVVideoController 是一个基于AVPlayer封装视频播放器,支持播放/暂停、左右退拽快进、上下滑动调节音量、自动手动全屏、全屏时横屏Or竖屏、有缓冲进度指示条...UIViewController基础上封装视频视图控制器,用起来更方便简洁,解耦性强,几行代码就足够了。...两者最大不同是在全屏和取消全屏处理上面:前者是一个视图View,可以直接加在父视图上面,全屏时是加在 [UIApplication sharedApplication].keyWindow上,而后者...,小屏时是取GOVVideoControllerView加在父视图上,全屏和取消全屏时是采用present和dismiss模态化转场方法 。...isEqualToString:@"rate"]){ if (self.avPlayer.rate == 1) { } } } #pragma mark -- 隐藏/显示状态栏方法

    3.9K40

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

    :didDeselectRowAtIndexPath方法中通过点击cell,减少cell高度,当cell重新显示时候还是会变回原来高度,并且系统内部对cell进行了一些处理,已经在内部设置好cell...return self.topicArr[indexPath.row].cellHeight; } 至此cell高度已经根据每个cell显示内容不同而决定,在这里需要强调一个问题:cell高度没有必要再每次显示时候都重新计算一遍...可以使用sd方法监听下载进度。...前面提到过服务器返回给我们图片数据有三种小图,中图,大图,我们可以使用AFN对用户当前网络进行判断,如果当前用户使用是蜂窝网络,则加载小图,为用户节省流量,同时也加快cell中图片显示速度。...self.class) isEqualToString:@"CLWordViewController"]) { params[@"type"] = @"29"; } 缺点:需要些大量繁琐代码,下拉刷新和上拉加载都需要重新判断一遍

    87860

    在 Swift 中使用 async let 并发运行后台任务

    它是编写异步代码一种更可读方式,比调度队列和回调函数更容易理解。Async/await 语法与其他编程语言(C#或JavaScript)中使用语法类似。...长期运行任务阻塞了UI 在一个同步程序中,代码以线性、从上到下方式运行。程序等待当前任务完成再进入下一任务。...请注意,由于DataFile模型是被视图监听,对模型任何改变都需要在UI线程上执行。这是通过使用 MainActor 队列来完成,即用MainActor.run包裹所有的模型更新。...() } .padding() } } 使用 async/await 来模拟下载一个文件,同时更新UI 在后台执行多个任务 现在我们有一个文件在后台下载,UI显示进度...视图被绑定到DataFiles数组,并更新显示每个文件下载进度。下载按钮被绑定到异步downloadFiles中。

    1.2K20

    iOS 9人机界面指南(四):UI元素(上) - 腾讯ISUX

    如果需要的话,设计一种自定义方式让用户可以以非线性方式来获取内容。页面视图控制器让用户从一页移动到前一页或者一页,而并不支持用户在并不相邻页面间快速切换。...4.2.10 分栏视图控制器 分栏视图控制器是一个用于管理两个相邻视图控制器显示全屏视图控制器。 ? API注释 每一个对分视图控制器视图负责管理一个窗格展现。...在点击,用户期望出现新视图,或者出现一个复选标记以表明先前点击项已经被选中或激活。 如果表格内容庞大而且复杂,不要在所有数据都加载完之后才一起显示出来。...可以首先展示文本信息,图片等较为复杂内容则在加载显示。这样可以将有用信息立即传达给用户,同时也提高了应用响应能力。 在等待信息加载时候,可以考虑展示“过期”信息。...此时应当在屏幕中央展示一个活动指示器(activity indicator)和一个信息标签(information label),比如“加载中…”,让用户知道加载仍然在进行。

    10.1K51

    01.视频播放器框架介绍

    视频常见布局视图 视频底图(用于显示初始化视频时封面图),视频状态视图加载loading,播放异常,加载视频失败,播放完成等】 改变亮度和声音【改变声音视图,改变亮度视图】,改变视频快进和快退,...,播放进度改变,锁定状态改变,设备方向监听等等操作 定义一个view接口InterControlView,在这里类里定义绑定视图视图隐藏和显示,播放状态,播放模式,播放进度,锁屏等操作。...比如播放中需要更新UI进度条,播放异常需要显示异常UI,都比较难处理播放器状态变化更新UI操作 这个是指该视频播放器能否看了文档快速上手,知道封装大概流程。...,主要是普通模式,小窗口模式,正常模式三种其中一种,方便控制器做UI更新 播放器player和view交互 这块非常关键,举个例子,视频播放失败需要显示控制层异常视图View;播放视频初始化需要显示loading...如何实现预加载 其实预加载思路很简单,在进行一个播放视频,再返回接下来需要预加载视频url,启用线程去请求下载数据 开启一个线程去请求并预加载一部分数据,可能需要预加载数据大于>1,利用队列先进入先进行加载

    2.7K51

    100行代码搞定短视频App,终于可以和美女合唱了

    功能看起来不复杂,就是把一个视频播放出来放一边,另一边显示摄像头画面和源视频一起录制。单独录制和播放都还比较简单,但是左右合成就有点头大 ?...Airdrop到电脑上保存为demo.mp4 开工 大概思路是这样 ● 在界面上放两个View, 一个用来播放,一个用 来录制 ● 再放一个按钮和进度条来开始录制和显示进度 ● 录制与源视频相同时长停止...>" key:@""]; return YES; } 这里Licence参数需要到腾讯云官网去申请,提交申请一般很快就会审批下来。...另外加上在进度条上显示进度逻辑 - (IBAction)onTapButton:(UIButton *)sender { [_editor startPlayFromTime:0 toTime...TXVideoInfoReader getVideoInfo:self.videoPath].duration]; } @end 以上既是所有的代码,这里回顾一下前面的完整流程: 新建与配置工程 添加录像、播放与状态显示视图

    1.3K20

    100行代码搞定短视频App,终于可以和美女合唱了。

    功能看起来不复杂,就是把一个视频播放出来放一边,另一边显示摄像头画面和源视频一起录制。单独录制和播放都还比较简单,但是左右合成就有点头大。网上搜了一圈都是些直播相关文章,看了下没什么头绪。...大概思路是这样 在界面上放两个View, 一个用来播放,一个用来录制 再放一个按钮和进度条来开始录制和显示进度 录制与源视频相同时长停止 把录好视频与源视频左右合成 预览合成好视频 先来开始工程创建...return YES; } 这里Licence参数需要到这里去申请,提交申请一般很快就会审批下来。...另外加上在进度条上显示进度逻辑。...TXVideoInfoReader getVideoInfo:self.videoPath].duration]; } @end 以上既是所有的代码,这里回顾一下前面的完整流程: 1.新建与配置工程 2.添加录像、播放与状态显示视图

    34.1K4742

    iOS开发常用之网络

    ASProgressPopUpView - 弹出进度显示进度。 RandomColorSwift - 一个自动生成好看颜色Swift库,RandomColorSwift。...BubbleTransition - 以气泡膨胀和缩小动画效果来显示和移除控制器,Uber就是这种取消操作方式。...JWAnimatedImage.swift - JWAnimatedImage.swift集中了目前主流GIF显示库(FLAnimatedImage,Gifu等)优点,进行重构,代码短小精悍。...KYWaterWaveView - 一个内置波浪动画UIView,里面有鱼跳跃水溅起来效果。 WaveLoadingView - iOS 唯一完美的波浪进度加载指示器,实现说明。...XTLoopScroll - 用两个timer三个重用视图实现无限循环scrollView,1自动轮播2点击监听回调当前图片3手动滑动重新计算轮播开始时间,良好用户体验。

    23.6K10

    Cocoa编程中视图控制器视图类详解

    进度与活动: UIActivityIndicatorView UIProgressView  控制器类 UIViewController类       UIViewController负责创建其管理视图及在低内存时候将它们从内存中移除...:将它隐藏才重新得到控制权。...不过,也可以视具体情况,我们直接在一个独立视图控制器中创建UITabBarController实例对象,自定义一个用于视图 切换控制器类ViewSwitcherViewController,就可在其中...• –viewDidLoad:当加载控制器视图到内存时,该方法被调用。...控制器加载视图过程 当调用视图控制器view属性时,视图控制器会先调用loadView方法加载视图,因此,可以在loadView方法中创建所有的视图,这是比较好编程惯例。

    5K50

    Vue3+TS项目中使用NProgress进度

    本文主要介绍如何在 Vue3+TS 项目中使用 NProgress 进度条,示例代码非常详细,对大家学习或者工作具有一定参考学习价值,需要朋友往下看。...开始进入处理方法时候,就启动 loading 效果,一旦捕获到这个方法结束,就去释放它,为了防止过程比较生硬,释放也会有一个进度条缓慢加载到 100%过程。...NProgress.configure({ easing: 'ease', // 动画方式 speed: 1000, // 递增进度速度 showSpinner: false, // 是否显示加载...NProgress.done(); }; 使用 一般我们会在页面切换,也就是跳路由时候会显示进度条,因此我们需要在 beforeEach(路由切换之前)和 afterEach(路由切换完成)...barSelector 进度控制器 NProgress.configure({ barSelector: '[role="bar"]' }); spinnerSelector 加载选择器 NProgress.configure

    3.3K20
    领券