gpt4 book ai didi

ios - 在 IOS10 Widget 中以编程方式更改 NCWidgetDisplayMode

转载 作者:搜寻专家 更新时间:2023-10-30 22:29:30 24 4
gpt4 key购买 nike

我希望以编程方式更改今天扩展的高度。由于 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))
}
}

但是当我运行我的代码时,today 扩展的高度没有改变并且控制台给我以下错误:

2016-11-05 14:24:29.425697 todayextension[28590:7222420] No active animation block!

我尝试在动画 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 中以编程方式扩展今天的扩展 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 8iOS 9 中,您需要显式处理小部件的高度。在 iOS 10 中,它不是必需的。

可以引用https://github.com/pgpt10/Today-Widget关于 Today's WidgetiOS 8iOS 9iOS 10 中的实现。

关于ios - 在 IOS10 Widget 中以编程方式更改 NCWidgetDisplayMode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40441773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com