今天iOS 10中的扩展紧凑模式高度

ha5z0ras  于 2023-03-14  发布在  iOS
关注(0)|答案(4)|浏览(123)

我正在努力改变我的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测试版和iOS 10测试版7。

6uxekuva

6uxekuva1#

viewDidAppear或之后设置preferredContentSize。我猜小工具会在视图出现之前调整大小。小工具的宽度不是SCREEN_WIDTH,因为iPhone屏幕边缘之间的间隙。

6tr1vspr

6tr1vspr2#

根据WWDC 2016的What's new in Cocoa Touch会议(大约44:00):
现在我们有一个用户控制的大小。紧凑模式,这是固定高度和扩展模式,这是可变高度。
因此,为NCWidgetDisplayModeCompact设置一个preferredContentSize似乎完全被忽略了(固定大小似乎是110pts)。

kxe2p93d

kxe2p93d3#

在SWIFT 3中:

TodayViewController的以下属性将返回紧凑模式的最大大小:

private var maxSizeForCompactMode: CGFloat {
    return extensionContext?.widgetMaximumSize(for: .compact).height ?? 0
}
unftdfkk

unftdfkk4#

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);
    }
}

相关问题