Today Extension 压缩模式高度在 iOS 10
Today Extension compact mode height in iOS 10
我很难在紧凑模式下更改 iOS 10 小部件的高度。
我只有一个空的小部件,里面没有视图。不过,无论我为紧凑高度设置什么,它似乎都忽略了它。
这是我的代码:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
[self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeExpanded];
}
- (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize{
if (activeDisplayMode == NCWidgetDisplayModeCompact) {
self.preferredContentSize = CGSizeMake(0, 50);
}
else{
self.preferredContentSize = CGSizeMake(0, 200);
}
}
这可能是测试版软件的问题吗?我在 Xcode 8 beta 和 iOS 10 beta 7.
1) 在viewDidLoad
中设置显示模式为NCWidgetDisplayModeExpanded
override func viewDidLoad() {
super.viewDidLoad()
self.extensionContext?.widgetLargestAvailableDisplayMode = NCWidgetDisplayMode.expanded
}
2) 实现这个协议方法
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize){
if (activeDisplayMode == NCWidgetDisplayMode.compact) {
self.preferredContentSize = maxSize;
}
else {
self.preferredContentSize = CGSize(width: 0, height: 200);
}
}
根据 WWDC 2016 的 What's new in Cocoa Touch session(在 44:00 标记附近):
Now we have a user controlled size. The compact mode, which is fixed height and the expanded mode which is variable height.
所以,似乎完全忽略了为NCWidgetDisplayModeCompact
设置一个preferredContentSize
(固定大小似乎是110pts)。
在 viewDidAppear
或之后设置 prefferedContentSize
。我想该小部件会在视图出现之前调整大小。小部件的宽度不是 SCREEN_WIDTH,因为 iPhone 屏幕边缘之间有间隙。
在SWIFT 3:
您的 TodayViewController 的以下 属性 将 return 紧凑模式的最大尺寸:
private var maxSizeForCompactMode: CGFloat {
return extensionContext?.widgetMaximumSize(for: .compact).height ?? 0
}
我很难在紧凑模式下更改 iOS 10 小部件的高度。
我只有一个空的小部件,里面没有视图。不过,无论我为紧凑高度设置什么,它似乎都忽略了它。
这是我的代码:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
[self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeExpanded];
}
- (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize{
if (activeDisplayMode == NCWidgetDisplayModeCompact) {
self.preferredContentSize = CGSizeMake(0, 50);
}
else{
self.preferredContentSize = CGSizeMake(0, 200);
}
}
这可能是测试版软件的问题吗?我在 Xcode 8 beta 和 iOS 10 beta 7.
1) 在viewDidLoad
NCWidgetDisplayModeExpanded
override func viewDidLoad() {
super.viewDidLoad()
self.extensionContext?.widgetLargestAvailableDisplayMode = NCWidgetDisplayMode.expanded
}
2) 实现这个协议方法
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize){
if (activeDisplayMode == NCWidgetDisplayMode.compact) {
self.preferredContentSize = maxSize;
}
else {
self.preferredContentSize = CGSize(width: 0, height: 200);
}
}
根据 WWDC 2016 的 What's new in Cocoa Touch session(在 44:00 标记附近):
Now we have a user controlled size. The compact mode, which is fixed height and the expanded mode which is variable height.
所以,似乎完全忽略了为NCWidgetDisplayModeCompact
设置一个preferredContentSize
(固定大小似乎是110pts)。
在 viewDidAppear
或之后设置 prefferedContentSize
。我想该小部件会在视图出现之前调整大小。小部件的宽度不是 SCREEN_WIDTH,因为 iPhone 屏幕边缘之间有间隙。
在SWIFT 3:
您的 TodayViewController 的以下 属性 将 return 紧凑模式的最大尺寸:
private var maxSizeForCompactMode: CGFloat {
return extensionContext?.widgetMaximumSize(for: .compact).height ?? 0
}