Swift:今天的Widget与动画

时间:2017-05-10 13:25:51

标签: ios swift today-extension ios10-today-widget ios9-today-widget

我想用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上运行时,窗口小部件上显示“无法加载”。并在调试打印中,打印“完成LayoutComponents”后。它有一行“程序以退出代码结束:0”。

我做错了什么线索?感谢。

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

我的问题实际上是今日扩展支持动画UIImageView吗?

1 个答案:

答案 0 :(得分:0)

imageView.startAnimating()属于viewDidAppear而非viewDidLoad,因为在视图显示之前没有任何动画可用。

同时验证故事板中是否禁用了“用户首选显式尺寸”(Today's extension iOS10 Show More/Less