微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – 重新绘制时,“扩展”视图会闪烁

根据Apple文档,“为了帮助您的小部件看起来更新,系统会偶尔捕获您的小部件视图的快照.当小部件再次可见时,将显示最新的快照,直到系统使用视频的实时版本替换它“.

但是,我看到的是,在实时视图准备之前,快照已从屏幕上删除.这会导致闪存效果,其中旧快照被取消屏幕,视图为空白的分秒,然后出现新视图.

开发人员是否负责将快照和实时视图之间的转换无缝连接?如果是这样,那么背后的策略是什么呢?我没有任何方式直接控制这种转变.

我能够通过移动数据加载来大大减轻效果
widgetPerformUpdateWithCompletionHandler:并且在viewWillAppear中保留绘图,但是我每隔15(或更多)打开通知中心仍然看到一次闪光.

解决方法

我有这个同样的问题,最后弄清了我的小部件所带来的问题.事实证明,这与我对我的小部件生命周期的误解有关.

从文档中,我认为今天的视图会保持我的窗口小部件状态的“快照”,直到widgetPerformUpdateWithCompletionHandler方法完成处理程序成功调用为止.

这似乎并非如此.从我可以看到,“快照”仅在“今日视图”动画(用户拉下通知中心时)时使用.一旦今天的视图被加载和固定,您的小部件将从头开始加载(如果使用,则从xib充电)并调用viewDidLoad.此时,您应该使用缓存的数据(而不是Web请求)填充您的小部件.如果你不这样做,你会看到你的笔尖的临时数据.这是导致闪烁的原因.

当viewDidLoad完成时,widgetPerformUpdateWithCompletionHandler被调用,它允许您获取新数据.当获取新数据时,您应该调用完成处理程序并缓存数据,以便稍后从头开始(在viewDidLoad中)加载窗口小部件时可以使用该数据.

缓存数据的一种简单方法用户认值.

原文地址:https://www.jb51.cc/iOS/329688.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐