专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构
适配iOS9.0多任务
启动界面适配
要让程序支持
iOS9.0多任务
需要使用Launch Screen File
来设置启动界面- 创建
Launch Screen.storyboard
并且配置到Launch Screen File
- 在
Assets.xcassets
中右击 - 创建
ImageSet
, 命名为launch_icon
, 用于在启动界面显示 - 创建
ImageSet
, 命名为launch_background
, 作为启动界面背景 - 在
Launch Screen.storyboard
创建2个imageView,用来显示启动图片和背景 - 启动图片在
iPhone
和iPad
上的大小是不一样的. 通过sizeClass
来配置约束
在代码中和
sizeClass
相关的类有2个UITraitCollection
,UIInterface
- 在
CZSplitViewController.m
中实现traitCollectionDidChange
来监听sizeClass
的改变 当
sizeClass
的UITraitNameHorizontalSizeClass = Compact
时,显示iPhone
的样式- 在
Main.Storyboard
中给master
控制器添加一个Container View
, 将iPhone
上的UITabbarViewController
嵌入到Container View
中 - 运行,在
UITraitNameHorizontalSizeClass = Compact
时,显示iPhone
的样式,但是在全屏时master
控制器显示的还是tabBar
控制器 - 新建
CZMenuViewController
继承UIViewController
, 将Main.storyboard
的master
控制器类型配置为CZMenuViewController
,并将Container View
连线到CZMenuViewController
- 在
CZMenuViewController
定义showContainerView:
来显示或隐藏iPhone界面的容器视图,并在.h
文件中公开此方法#pragma mark - iPhone 容器视图相关代码 /** * 显示或隐藏iPhone界面的容器视图 * @param isShow YES:显示, NO:隐藏 */ - (void)showContainerView:(BOOL) isShow { self.containerView.hidden = !isShow; }
在
CZSplitViewController
的traitCollectionDidChange:
方法中调用showContainerView:
#pragma mark - sizeClass /// 当控制器的sizeClass发生改变的时候调用 - (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection { NSLog(@"traitCollectionDidChange: %@", self.traitCollection); // 判断是否显示iPhone界面 BOOL isShow = self.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassCompact; // 获取到 CZMenuViewController CZMenuViewController *menuVC = self.viewControllers[0]; // 判断 menuVC 是否真的是 CZMenuViewController 类型 if (![menuVC isKindOfClass:[CZMenuViewController class]]) { return; } // 调用 CZMenuViewController 来显示或隐藏 iPhone 界面 [menuVC showContainerView:isShow]; }
- 在