发现一个NB的东西,原来实现半透明效果就是添加一个半透明的View,但是如何才能模态出一个控制器呢,这种需求还是很常见的吧...
老方法一般都是创建一个自己的Window,然后添加新的控制器在Window上,设置window颜色,控制器颜色为clearColor,还是挺麻烦的,今儿扒扒捡捡,找到一个属性可以达到这种效果
modalPresentationStyle
typedef NS_ENUM(NSInteger, UIModalPresentationStyle) {
UIModalPresentationFullScreen = 0,
UIModalPresentationPageSheet NS_ENUM_AVAILABLE_IOS(3_2) __TVOS_PROHIBITED,
UIModalPresentationFormSheet NS_ENUM_AVAILABLE_IOS(3_2) __TVOS_PROHIBITED,
UIModalPresentationCurrentContext NS_ENUM_AVAILABLE_IOS(3_2),
UIModalPresentationCustom NS_ENUM_AVAILABLE_IOS(7_0),
UIModalPresentationOverFullScreen NS_ENUM_AVAILABLE_IOS(8_0),
UIModalPresentationOverCurrentContext NS_ENUM_AVAILABLE_IOS(8_0),
UIModalPresentationPopover NS_ENUM_AVAILABLE_IOS(8_0) __TVOS_PROHIBITED,
UIModalPresentationNone NS_ENUM_AVAILABLE_IOS(7_0) = -1,
};
上面显示的一样,在原来只提供了4个属性,后来又添加了之后的这些
UIModalPresentationFullScreen这个是默认的,充满全屏
UIModalPresentationPageSheet这个是像sheet的效果,但是是满屏的,如果横屏的话才会出效果,就是一个竖屏的大小周边都是不能点击的灰色
UIModalPresentationFormSheet类似Sheet的效果
UIModalPresentationCurrentContext跟父类出现的样式一样
UIModalPresentationCustom自定义样式
好了,说一下怎么创建一个透明的控制器覆盖在老控制器上面
如果A present B设置 A.definesPresentationContext = YES; B.modalPresentationStyle = UIModalPresentationOverCurrentContext; B.view 是半透明的,然后让A 把B present 出来,就是半透明的