实现思路解析:
1,首先要拿到window (方式有多重可以app delegate,或者创建window、keywindow等等方式)
2, 然后创建一个backgroundView,使其frame和window相等,设置背景颜色,再添加到window上。
3,把需要显示的view添加到backgroundView上,当然有动画效果更好
下边的 “弹出视图”和“关闭视图”就是对显示在window上的视图的操作
1. 弹出视图
/**显示弹出视图*/
- (void)show{
//1. 取出window
UIWindow * window = [[UIApplication sharedApplication] keywindow];
//[[[UIApplication sharedApplication] windows] firstObject];有时这样取window会加载不出我们需要的试图,这是因为不是keywindow,比如用storyboard画的试图,推荐用keywindow不论什么情况包不会出问题。
//2. 创建背景视图
_bgView = [[UIView alloc]init];
_bgView.frame = window.bounds;
//3. 背景颜色可以用多种方法看需要咯
_bgView.backgroundColor = [[UIColor blackColor]colorWithAlphaComponent:0.4];
// _bgView.backgroundColor = [UIColor colorWithWhite:0.1 alpha:0.6];
[window addSubview:_bgView];
//4. 把需要展示的控件添加上去
[window addSubview:self];
//5. 动画简单(low)
[UIView animateWithDuration:0.3 animations:^{
_pickerView.transform = CGAffineTransformMakeScale(1.0, 1.0);
}];
}
2. 关闭视图
/**关闭弹出视图*/
- (void) hidden {
[UIView animateWithDuration:0.3 animations:^{
_pickerView.transform = CGAffineTransformMakeScale(0.001, 0.002);
} completion:^(BOOL finished) {
[_pickerView removeFromSuperview];
_pickerView = nil;
[self removeFromSuperview];
[_bgView removeFromSuperview];
_bgView = nil;
}];
}
下边是我简单封装的PickerView
以上是我简单封装的PickerView的显示,下边是具体的demo也可以记录一下,具体代码见下:
1. pickerView.h文件
#import <UIKit/UIKit.h>
typedef void(^selectedTitle)(NSString *indexTitle);
@interface LLPIckerView : UIView
@prope