iOS彈出一個View(自定義的提示框)
阿新 • • 發佈:2019-01-22
之前要寫一個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的狀態位置的改變
}];
除了改變位置其實還可以在裡面讓它淡出淡入等動畫,這些需要你們自己去拓展咯!