3、为什么有时展开或折叠"失灵"了,没有对应的展开或折叠呢?
这个问题的前提,肯定是你展开、折叠对应的widget高度不一样,只是看到了右上角按钮内容改变,但高度却没有变。
这个问题的原因在于,点击展开、折叠按钮修改了widget的mode之后,却没有设置对应的高度:preferredContentSize。怎么办呢?再回到代码段2,mode改变后,设置对应状态下的高度即可。
4、如何用XCode 7.3打出能够适配iOS 10的widget呢?
适配完iOS 10,会发现代码中总不能用XCode 8.0 beta打包代码吧,可是用XCode 7.3打包代码也编译不过啊,widgetLargestAvailableDisplayMode和NCWidgetDisplayMode都是iOS 10的产物。
用kvc试试看?对,就是kvc。闲言不表,直接看代码吧:
代码段3 相对于 代码段1
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.extensionContext setValue:@"1" forKey:@"widgetLargestAvailableDisplayMode"];
}
代码段4相对于代码段2
- (void)widgetActiveDisplayModeDidChange:(NSInteger)activeDisplayMode withMaximumSize:(CGSize)maxSize {
if (activeDisplayMode == 0) {
self.preferredContentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width, 110);
} else {
self.preferredContentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width, 300);
}
}
5、切记:UI的更新要在主线程操作哈!!!比如酱紫:
//通知主线程刷新
dispatch_async(dispatch_get_main_queue(), ^{
//...........;
});
好了,我在适配widget过程的问题就这些了,希望可以帮助正在开发widget遇到同样问题的朋友。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持ASPKU。
注:相关教程知识阅读请移步到IOS开发频道。










