首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏iOS开发~

    iOS_定时器:NSTimer、GCDTimer、DisplayLink

    strong) CADisplayLink *link; self.link = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLink 回调方法: - (void)displayLink:(CADisplayLink *)link { link.duration // 最大屏幕刷新时间间隔, 在selector首次被调用后才会被赋值

    1.3K20编辑于 2022-07-20
  • 来自专栏APP自动化测试

    创建简单动画(一) --- 常规hud

    @property (nonatomic, strong) MyView *myView; @property (nonatomic, strong) CADisplayLink *displayLink implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //创建计时器 _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(countOn)]; _displayLink.paused = YES; [_displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; countOn { _count++; _myView.count = _count; if (_count > 290) { [_displayLink

    81220发布于 2019-10-15
  • 来自专栏Helloted

    监测APP卡顿

    所以,卡顿造成的原因分为CPU卡顿和GPU卡顿,CPU卡顿可以用CADisplayLink来检测,UI更新卡顿可以用Runloop的mode来检测 监测卡顿:开一个子线程,利用displaylink或者 CFTimeInterval current = self.displayLink.timestamp; CFTimeInterval period = current - _last_time ; } } - (CADisplayLink *)displayLink{ if (! _displayLink) { _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(updateTime } return _displayLink; } 五、上传记录 1、频率以及流量:是否所有的用户都要做统计?

    2.1K10编辑于 2022-06-06
  • 来自专栏码客

    iOS 定时任务

    第一种会自动加入到MainRunloop的NSDefaultRunLoopMode中 停止方式(非循环的可以不掉用) [timer invalidate]; CADisplayLink 创建方式 self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(handleDisplayLink:)]; [self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 停止方式 [self.displayLink invalidate ]; self.displayLink = nil; 重要属性 frameInterval NSInteger类型的值,用来设置间隔多少帧调用一次selector方法,默认值是1,即每帧都调用一次。

    2K20发布于 2019-10-22
  • 来自专栏后段开发

    swift简单弹幕例子,仿哔哩哔哩

    override func viewDidLoad() { super.viewDidLoad() // 创建 CADisplayLink 对象 let displayLink = CADisplayLink(target: self, selector: #selector(update)) // 将视图控制器添加到 displayLinkdisplayLink.add(self, for: .common) // 设置视图属性 squareView.frame = CGRect UIColor.red.withAlphaComponent(0.5) view.addSubview(squareView) } @objc func update(_ displayLink func start() { displayLink = CADisplayLink(target: self, selector: #selector(update)) displayLink

    57420编辑于 2023-07-21
  • 来自专栏APP自动化测试

    使用CAShapeLayer绘图

    @property (nonatomic, strong) CAShapeLayer *mylayer; @property (nonatomic, strong) CADisplayLink *displayLink layer; }); [self.view.layer addSublayer:self.mylayer]; self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(changeEnd)]; [self.displayLink addToRunLoop static CGFloat count; @interface ViewController () @property (nonatomic, strong) CADisplayLink *displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(action)]; [self.displayLink addToRunLoop

    1.6K10发布于 2019-10-15
  • 来自专栏移动端开发

    画个Shape留意到的东西

    1.5 * Double.pi) + self.progress * pi2 /// 计时器停止 if self.progress >= 1 { displayLink self.addSubview(progressLabel) /// 画进度条的底圈 drawBaseProcess() /// 定时器 displayLink = CADisplayLink.init(target: self, selector: #selector(processing)) displayLink?. add(to: RunLoop.main, forMode: .default) displayLink?.

    46620发布于 2020-06-19
  • 来自专栏即时通讯技术

    微信团队分享:详解iOS版微信视频号直播中因帧率异常导致的功耗问题

    整体过程大概如下: 1)App 处理事件,例如 touch 事件或者 displaylink timer 事件; 2)App 完成视图的 layout、图像 decode 等操作,并触发 CA::Transaction self.displayLink) {         self.displayLink = [CADisplayLink displayLinkWithTarget:selfselector:@selector = CAFrameRateRangeMake(15, 24, 0);         } else{             self.displayLink.preferredFramesPerSecond ];     } else{         self.displayLink.paused = NO;     } } - (void)tt_onDisplayLink:(CADisplayLink *)displayLink {     if(self.beginTime == 0.0) {         self.beginTime = self.displayLink.timestamp;

    1.9K00编辑于 2024-01-16
  • 来自专栏VRPinea

    1.11 VR扫描:DisplayLink展示多人无线VR游戏方案;武汉协和医院完成HoloLens远程会诊手术

    DisplayLink推多人无线VR游戏方案 在CES 2018上,VR无线解决方案商DisplayLink展示了一项多人无线VR游戏方案。 这种方案的成功实现,得益于DisplayLink的XR编解码器和60GHz无线连接。

    90640发布于 2018-05-17
  • 来自专栏网罗开发

    iOS 如何监测 FPS

    CADisplayLink 来实现 FPS 监测的常规做法如下: var historyCount: Int = 0 var lastUpdateTimestamp: Double = 0 let displayLink = CADisplayLink(target: self, selector: #selector(step(displayLink:)) // ... func step(displayLink: CADisplayLink) { if (lastUpdateTimestamp <= 0) { lastUpdateTimestamp = displayLink.timestamp } historyCount += 1 let interval = displayLink.timestamp -

    2.5K30发布于 2021-11-30
  • 来自专栏闵开慧

    java中链表实现

    public Node(int iData, double dData) { this.iData = iData; this.dData = dData; } public void displayLink = null) { currentNode.displayLink(); currentNode = currentNode.next; } System.out.println()

    87370发布于 2018-03-30
  • 来自专栏大话swift

    FPS 与 CADisplayLink

    dispalylink.add(to: RunLoop.current, forMode: RunLoop.Mode.default) } @objc func step(displaylink : CADisplayLink){ let actualFramesPerSecond = 1 / (displaylink.targetTimestamp - displaylink.timestamp

    1.2K20发布于 2019-07-03
  • 来自专栏iOS开发攻城狮的集散地

    iOS 性能监测之FPS

    CADisplayLink 简介:https://www.jianshu.com/p/434ec6911148 初始化CADisplayLink,监测FPS值的代码如下: _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkTick:)]; [_displayLink setPaused:YES]; [_displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes

    3.1K30发布于 2018-05-22
  • 来自专栏BY的专栏

    iOS定时器,你真的会使用吗?前言正文结语

    使用方法 创建: @property (nonatomic, strong) CADisplayLink *displayLink; self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(handleDisplayLink:)]; // 每隔1帧调用一次 self.displayLink.frameInterval = 1; [self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 释放方法 : [self.displayLink invalidate]; self.displayLink = nil; 当把CADisplayLink对象添加到runloop中后,selector就能被周期性调用

    3K50发布于 2018-05-11
  • 来自专栏移动端开发

    iOS 动画笔记 (一)

    ) userInfo:nil repeats:YES]; // 停止定时器 [timer invalidate]; // 创建CADisplayLink 定时器 CADisplayLink *displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(test:)]; // 将创建的displaylink添加到runloop 中,否则定时器不会执行 [displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; // 停止定时器 [displayLink invalidate]; displayLink = nil; 三:先说说系统的吧!

    1.1K80发布于 2018-01-12
  • 来自专栏Code_iOS

    OpenGL ES 2.0 (iOS)[05-1]:进入 3D 世界,从正方体开始

    viewWillDisappear:animated]; [self.cubeView pauseUpdate]; } CubeView 的应用 #pragma mark - DisplayLink self.delegate ) { return; } self.displayLink = [CADisplayLink displayLinkWithTarget = displayPause; } - (BOOL)displayPause { return self.displayLink.paused; } 停止更新的方法: - (void)pauseUpdate self.displayPause = YES; } 结束更新的方法: - (void)endUpdate { self.displayPause = YES; [self.displayLink invalidate]; [self.displayLink removeFromRunLoop:[NSRunLoop currentRunLoop]

    1.1K30发布于 2018-08-30
  • 来自专栏零域Blog

    定时器 你真的会使用吗?

    使用方法 创建: @property (nonatomic, strong) CADisplayLink *displayLink; self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(handleDisplayLink:)]; // 每隔1帧调用一次 self.displayLink.frameInterval = 1; [self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 释放方法 : [self.displayLink invalidate]; self.displayLink = nil; ``` 当把**CADisplayLink**对象添加到runloop

    1.4K20编辑于 2022-03-22
  • 来自专栏VRPinea

    英特尔、TPCast这场新欢旧爱无线VR之争,HTC很明显会选它!

    其实早在E3 2017上,英特尔就曾宣布把自家的DisplayLink XR无线模块与HTC Vive结合,与HTC Vive合作推出VR无线解决方案,并在自家展台上进行了产品概念的验证展示。 小编了解到,DisplayLink XR解决方案主要由6部分构成,分别是外壳、电池、电池外壳、PCB、散热器和60GHz无线接口。 ? 原型图展示的DisplayLink XR无线模块,与TPCast的无线升级模块一样,也同样需要在头显上额外增添一个装置,增加负重感。 但DisplayLink XR无线模块那时仅是一款不成熟的原型产品,且根据英特尔的想法,是想把这个做成芯片提供给第三方使用的。

    1K50发布于 2018-05-17
  • 来自专栏進无尽的文章

    绘图-几个较复杂统计图案例的实现分析

    _displayLink) { _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector (handleWaveFrameUpdate)]; [_displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode ]; _displayLink.paused = true; } __block UIView *shape; CGFloat middleY controlPoints addObject:shape]; }]; _animationControlPoints = controlPoints; _displayLink.paused completion:^(BOOL finished) { if (finished) { _displayLink.paused

    1.8K20发布于 2018-09-12
  • 来自专栏Java帮帮-微信公众号-技术文章全总结

    数据结构是哈希表(hashTable)(二)

    = null) { current.displayLink(); current = current.next; } data; } public int getKey() { return iData; } public void displayLink

    73350发布于 2018-03-16
领券