1

我想用 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 吗?

4

1 回答 1

1

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

还要验证情节提要中是否禁用了“用户首选显式大小”(今天的扩展 iOS10 Show More/Less

于 2017-05-10T14:23:53.113 回答