IOS widget开发笔录
刚完成IOS widget开发,仿照UC头条,头条日报widget,附上效果图:
折叠效果图 展开效果图目前实现的功能便是,如折叠效果图,左右两边的箭头可以进行图片和标题的切换;在展开图中,“换一批”按钮可以根据显示的数组数目,整组切换,当然,如果只有3组图片,这按钮会进行随机排序再显示。大于3组,例如4组,假设1,2,3,4。显示的是1,2,3,切换后便是4,1,2。“查看更多”则是跳转到应用内部,点击cell也是会跳到应用中。
如何实现,就不多说了,网上的教程很多。在此记录下开发中遇到的问题:
1:折叠的高度。不论是5,5s,6,6p等,都是110。
2:展开按钮。在widget初始化的时候,最好能够使用:
if([self.extensionContext respondsToSelector:@selector(setWidgetLargestAvailableDisplayMode:)]) {
self.extensionContext.widgetLargestAvailableDisplayMode = NCWidgetDisplayModeExpanded;
}
把widget最为展开模式,不然的话,就有可能不显示右上角的折叠展开的按钮。
3:适配6p的横屏。这是个很蛋疼的事情。首先,横屏和竖屏的frame值是会改变的,就需要接收到屏幕旋转的通知,在尝试了诸多方法后,
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator{}
-(void)viewDidLayoutSubviews{}
这两个方法是屏幕旋转后会触发的方法,在这两个方法里面自行判断下当前屏幕的尺寸,就知道是否为横竖屏。就可以调整控件的frame值了。
4:3dTouch。若想要在3dtouch中显示你想要展示的widget,只需要在项目的plist文件中进行修改。
后面是widget的bundle id5.头文件导入。在widget中创建PrefixHeader.pch文件,并在build settings - AppleLLVM 8.0-Language - Prefix Header中加入文件的路径:widget名称/PrefixHeader.pch即可
网友评论