您的位置:首页 > 移动开发 > IOS开发

iOS弹出一个View(自定义的提示框)

2016-04-21 14:42 537 查看
之前要写一个iPad的一个项目,里面有一个分享的按钮,弹出一个View,上面几个图片按钮,菜菜的我为了这个小功能花费了很多时间,最后弄明白了,发现之前的思路都想错了,要实现弹出一个View,其实就是先创建两个View(一个遮罩,一个装显示的内容)在点击按钮的时候把这两个View添加到self.view上面先添加遮罩的View,再添加内容的View,不要忘了代码的执行顺序,两个view是分开添加的,不要把内容view添加到遮罩view上面一次添加,点击遮罩view的时候就应该把这两个View
remove掉,(2016-11-15新增内容:几个月的成长我深知我写的这个博客技术含量很低,但是相比还是能够帮很多初学者的,为了更好的提升自定义提示框显示出现退出效果,我加了一个View类的block方法,使用它可以实现较为简单的一些动画~代码在最下面):

首先创建两个view:

@property (nonatomic,strong) UIView * maskTheView;
@property (nonatomic,strong) UIView * shareView;


然后写好GET方法;遮罩view的点击手势点击的时候走一个方法,remo的代码放在里面

- (UIView *)maskTheView{
if (!_maskTheView) {
_maskTheView = [[UIView alloc]initWithFrame:[UIScreen mainScreen].bounds];
_maskTheView.backgroundColor = [UIColor colorWithRed:0/255.f green:0/255.f blue:0/255.f alpha:0.5];
//添加一个点击手势
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(maskClickGesture)];
[_maskTheView addGestureRecognizer:tap];//让header去检测点击手势
}
return _maskTheView;
}

- (UIView *)shareView{
if (!_shareView) {
_shareView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 160)];
_shareView.center = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2);
_shareView.backgroundColor = [UIColor whiteColor];

}
return _shareView;
}


然后在按钮的点击事件里面添加这两个view

[self.view addSubview:self.maskTheView];
[self.view addSubview:self.shareView];


点击手势的点击事件

- (void)maskClickGesture{
[self.maskTheView removeFromSuperview];
[self.shareView removeFromSuperview];
}


以上就是实现代码部分,我想这个应该能帮助一些和我一样的初入iOS的朋友们,这个方法可以实现很多样式的弹出效果

新增view的block方法实现简单动画的view - block:

声明的那个提示框,在一开始设置好了他的大小位置以后,可以通过某个按钮的点击事件里面写上下面的代码,在下面的blcok代码块里面你可以再次将那个提示框的大小位置重新定制,比如原先我这个视图100*100的宽高,位置处于屏幕外面,我可以让它在点某个按钮时盖面状态为大小200*200宽高,位置为X 200,Y 200的位置显示,旧位置和新位置变化的时长为0.25秒:
UIView * view1 = [[UIView alloc]initWithFrame:CGRectMake(-100, 100, 100, 100)];
[UIView animateWithDuration:0.25 animations:^{//0.25是指动画时长,视自身情况而定
CGRect rect = CGRectMake(200, 200, 200, 200);    //新的位置及大小
view1.frame = rect;         //把新的frame赋值给view1就可以了,这个blcok就会在你上面设置的时间里完成这个view的状态位置的改变
}];


除了改变位置其实还可以在里面让它淡出淡入等动画,这些需要你们自己去拓展咯!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息