横向模式下的小部件问题
Issue in Widgets in landscape mode
我对小部件有这个恼人的问题,它会在横向模式下修剪我的视图内容。我已经静态地放置了内容大小,但它不起作用。 Apple 是否限制小部件在横向上具有特定高度?
Apple 的界面指南说不推荐,但可行吗?
编辑:
iOS 上的今日小部件有高度限制。最大高度为(屏幕尺寸)-(通知中心UI高度)。通知中心绘制其 UI 后剩下的任何东西都留给小部件。横向和纵向会有所不同。
不幸的是,这个限制没有记录在案,也没有任何方法可以在 运行 时查找它。如果你要求更大的尺寸,你会得到比你要求的少的东西,但没有办法询问限制是多少。 [如果 Apple 的任何人读到这篇文章,请参阅 rdar://18408718,"Today extensions have undocumented, hard to discover size limits"]
在某些情况下,通知中心似乎会施加较低的高度限制。这对我来说像是一个错误,但目前没有办法解决它。
With Swift 3 & IOS10 : 将此方法添加到您的小部件控制器,您将获得 maxsize
@available(iOSApplicationExtension 10.0, *)
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize){
if (activeDisplayMode == NCWidgetDisplayMode.compact) {
self.preferredContentSize = maxSize;
// hide or show what you want
messageLabel.isHidden = false
textLabel.isHidden = true
}
else {
self.preferredContentSize = CGSize(width: 0, height: (maxSize.height - 100) // personnaly I remove 100 to make it easier fo the user to see all the widget
messageLabel.isHidden = true
textLabel.isHidden = false
}
}
我对小部件有这个恼人的问题,它会在横向模式下修剪我的视图内容。我已经静态地放置了内容大小,但它不起作用。 Apple 是否限制小部件在横向上具有特定高度? Apple 的界面指南说不推荐,但可行吗?
编辑:
iOS 上的今日小部件有高度限制。最大高度为(屏幕尺寸)-(通知中心UI高度)。通知中心绘制其 UI 后剩下的任何东西都留给小部件。横向和纵向会有所不同。
不幸的是,这个限制没有记录在案,也没有任何方法可以在 运行 时查找它。如果你要求更大的尺寸,你会得到比你要求的少的东西,但没有办法询问限制是多少。 [如果 Apple 的任何人读到这篇文章,请参阅 rdar://18408718,"Today extensions have undocumented, hard to discover size limits"]
在某些情况下,通知中心似乎会施加较低的高度限制。这对我来说像是一个错误,但目前没有办法解决它。
With Swift 3 & IOS10 : 将此方法添加到您的小部件控制器,您将获得 maxsize
@available(iOSApplicationExtension 10.0, *)
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize){
if (activeDisplayMode == NCWidgetDisplayMode.compact) {
self.preferredContentSize = maxSize;
// hide or show what you want
messageLabel.isHidden = false
textLabel.isHidden = true
}
else {
self.preferredContentSize = CGSize(width: 0, height: (maxSize.height - 100) // personnaly I remove 100 to make it easier fo the user to see all the widget
messageLabel.isHidden = true
textLabel.isHidden = false
}
}