iOS今天的小部件内容有时会消失并重绘

时间:2015-01-25 07:55:19

标签: ios widget ios8-today-widget

我从苹果文档中读到,在今天的小部件中,系统拍摄快照,当需要绘制小部件时,它首先显示快照,然后根据需要执行更新。

  

为了帮助您的小部件查看最新版本,系统偶尔会捕获   窗口小部件视图的快照。当小部件变得可见时   再次,显示最新的快照,直到系统替换   它有一个实时版本的视图。

     

要在拍摄快照之前更新窗口小部件的状态,请务必   符合NCWidgetProviding协议。当你的小部件收到   widgetPerformUpdateWithCompletionHandler:调用,更新你的   小部件的视图与最新内容并调用完成   handler,使用以下常量之一来描述结果   更新:

从上面,我希望我的代码行为如下:

  1. 在viewDidLoad或widgetPerformUpdateWithCompletionHandler或其他任何地方,在调用NCWidgetProviding协议(例如completionHandler(NCUpdateResult.NewData))之前,我设置了UI。

  2. 然后我调用completionHandler(NCUpdateResult.NewData)。

  3. 然后系统会拍摄我的用户界面的快照。

  4. 当用户关闭并打开今日小部件时,系统会立即显示快照,然后检查是否需要更新。

  5. 如果需要更新。

  6. 但是,如果我在绘制UI后关闭并打开今日小部件,则它不会像上面那样起作用。

    有时,它按照我的预期行事:当我打开小部件时,立即显示我之前的UI,然后更新。

    但在其他时候,会显示空白而不是我以前的用户界面,当然UI会重新绘制,但这种“闪烁”很烦人。

    我做错了吗?我误解了这份文件吗?可以因为我使用自动布局和布局约束吗?

    我已经尝试了所有我能想到的东西,但它有时会起作用而不是其他时间。

    如何避免这种烦人的眨眼?

    感谢任何帮助或建议。谢谢!

1 个答案:

答案 0 :(得分:1)

我终于解决了这个问题。感谢这个帖子(Today Extension view flashes when redrawing

这是因为我的小部件出于某种原因崩溃了。 (有时我的今天小部件,有时候iOS小部件本身 - 可能是我的错......)

我开始研究它崩溃的原因,但至少现在我知道在哪里挖掘。