ant*_*522 5 ios swift today-extension ios10-today-widget
我期待以编程方式更改今天扩展的高度.正如iOS10 SDSK介绍的那样,NCWidgetDisplayMode我试图用它来以编程方式改变我的身高preferredContentSize.
我已实施widgetActiveDisplayModeDidChange:
@available(iOSApplicationExtension 10.0, *)
func widgetActiveDisplayModeDidChange(activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
if (activeDisplayMode == NCWidgetDisplayMode.Compact) {
self.preferredContentSize = maxSize
}
else {
self.preferredContentSize = CGSize(width: maxSize.width, height: 280)
}
}
Run Code Online (Sandbox Code Playgroud)
我希望在UIButton按下时窗口小部件高度扩展:
@IBAction func multiplybyonethousand (sender: AnyObject) {
if self.extensionContext?.widgetActiveDisplayMode == NCWidgetDisplayMode.Compact {
self.widgetActiveDisplayModeDidChange(.Expanded, withMaximumSize: CGSizeMake(0, 300))
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行我的代码时,今天扩展的高度不会改变,控制台给我以下错误:
2016-11-05 14:24:29.425697 todayextension[28590:7222420] No active animation block!
Run Code Online (Sandbox Code Playgroud)
我试图widgetActiveDisplayModeDidChange在动画块内部调用:
@IBAction func multiplybyonethousand (sender: AnyObject) {
if self.extensionContext?.widgetActiveDisplayMode == NCWidgetDisplayMode.Compact {
UIView.animateWithDuration(0.2, delay: 0, options: .CurveLinear, animations: { () -> Void in
self.widgetActiveDisplayModeDidChange(.Expanded, withMaximumSize: CGSizeMake(0, 300))
}) { (completed) -> Void in
//Do Stuff
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我仍然收到No active animation block!错误消息.有没有办法以编程方式扩展iOS10中的今天扩展视图?
PGD*_*Dev 10
在iOS 10,Show More/Show Less自动提供按钮Today's Extension.因此,widget自动处理的高度NCWidgetDisplayMode.您无需提供任何显式按钮来处理窗口小部件的高度.
override func viewDidLoad() {
super.viewDidLoad()
if #available(iOSApplicationExtension 10.0, *) {
self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded
}
}
Run Code Online (Sandbox Code Playgroud)
实现NCWidgetProviding协议的方法:
@available(iOSApplicationExtension 10.0, *)
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
if activeDisplayMode == .expanded {
preferredContentSize = CGSize(width: maxSize.width, height: 300)
} else {
preferredContentSize = maxSize
}
}
Run Code Online (Sandbox Code Playgroud)
在,iOS 8和iOS 9,你需要显式处理小部件的高度.在iOS 10,它不是必需的.
你可以参考https://github.com/pgpt10/Today-Widget来Today's Widget实现iOS 8,iOS 9和iOS 10.
| 归档时间: |
|
| 查看次数: |
2858 次 |
| 最近记录: |