我希望以编程方式更改今天扩展的高度。当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)
}
}
我希望在按下
UIButton
时扩大窗口小部件的高度:@IBAction func multiplybyonethousand (sender: AnyObject) {
if self.extensionContext?.widgetActiveDisplayMode == NCWidgetDisplayMode.Compact {
self.widgetActiveDisplayModeDidChange(.Expanded, withMaximumSize: CGSizeMake(0, 300))
}
}
但是,当我运行代码时,今天扩展的高度不会改变,并且控制台会显示以下错误:
2016-11-05 14:24:29.425697 todayextension[28590:7222420] No active animation block!
我试图在动画块中调用
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
}
}
}
但是我仍然收到
No active animation block!
错误消息。有没有办法在iOS10中以编程方式扩展Today扩展 View ? 最佳答案
在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
}
}
实现
NCWidgetProviding
协议(protocol)的方法:@available(iOSApplicationExtension 10.0, *)
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
if activeDisplayMode == .expanded {
preferredContentSize = CGSize(width: maxSize.width, height: 300)
} else {
preferredContentSize = maxSize
}
}
在
iOS 8
和iOS 9
中,您需要显式处理小部件的高度。在iOS 10
中,它不是必需的。您可以在
Today's Widget
,iOS 8
和iOS 9
中引用有关iOS 10
实现的https://github.com/pgpt10/Today-Widget。关于ios - 在IOS10小部件中以编程方式更改NCWidgetDisplayMode,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40441773/