Swift:带有动画的今日小部件

Posted

技术标签:

【中文标题】Swift:带有动画的今日小部件【英文标题】:Swift: Today Widget with animation 【发布时间】:2017-05-10 13:25:50 【问题描述】:

我想写一个带有 UIImageView 的 Today Widget Extension 来显示动画。

这是我的代码。

    override func viewDidLoad() 
        super.viewDidLoad()
        layoutComponents()
        imageView.startAnimating()
   

func layoutComponents()         
    self.extensionContext?.widgetLargestAvailableDisplayMode = NCWidgetDisplayMode.expanded

    self.view.backgroundColor = UIColor.blue

    let images = [UIImage(named:"1.png"), UIImage(named:"2.png"), UIImage(named:"3.png")]

    imageView.frame = CGRect(x: 0, y: 0, width: self.extensionContext!.widgetMaximumSize(for: .expanded).width, height: self.extensionContext!.widgetMaximumSize(for: .expanded).height)
    imageView.animationImages = images
    imageView.image = images[0]
    imageView.animationDuration = 1.0
    imageView.animationRepeatCount = 0
    self.view.addSubview(imageView)

    debugPrint("Done LayoutComponents")
  

代码编译成功。但是,无法加载小部件,在 iPhone 上运行时,小部件上会显示“无法加载”。并在调试打印中,打印“Done LayoutComponents”之后。它有一行“程序以退出代码结束:0”。

任何线索我做错了什么?谢谢。

请注意,每当我将代码 imageView.startAnimating() 放入 viewWillAppear() viewDidAppear 或 widgetPerformUpdate() 时,它都会退出并出现“无法加载”的问题。

我的问题实际上是 Today Extension 支持动画 UIImageView?

【问题讨论】:

请将调试器的结果复制并粘贴到您的问题中。通常,如果向上滚动,您可以找到更多有关崩溃原因的信息。 它没有崩溃。它以退出代码 0 退出。 2017-05-10 22:34:26.597307+0800 PetWidget[9632:3946653] 没有活动的动画块!程序以退出代码结束:0 全部打印出来。 在小部件的情况下无法加载是崩溃。还要检查图像是否被定位。 是的,如果我一张一张地显示图像没有问题。 【参考方案1】:

imageView.startAnimating() 属于viewDidAppear 而不是viewDidLoad,因为在视图出现之前没有任何动画。

还要验证情节提要中的“用户首选显式大小”是否已禁用 (Today's extension ios10 Show More/Less)

【讨论】:

anhuiyouxi.com/today-s-extension-ios10-show-more-less 这有帮助吗?他们和你有同样的错误:No active animation block 我的始终处于扩展模式。模式的改变不会改变结果:( ***.com/questions/40441773/… 您是否针对 iOS9 进行了测试?看来 iOS10 的做法有所不同。 是的,iOS9 和 8 也试过了。同样的输出我想知道 Today Widget 是否支持 UIImageView 动画?

以上是关于Swift:带有动画的今日小部件的主要内容,如果未能解决你的问题,请参考以下文章

XCUITest 和今日小部件

带有小部件列表的 Flutter 动画切换器

NSTextAttachment 未显示在今日通知中心小部件中

iOS 14 小部件中的动画

Flutter:一次多次使用相同的动画小部件

Android 小部件:RemoteViews 上的动画? [复制]