1. 程式人生 > >iOS彈出一個View(自定義的提示框)

iOS彈出一個View(自定義的提示框)

之前要寫一個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的狀態位置的改變
    }];

除了改變位置其實還可以在裡面讓它淡出淡入等動畫,這些需要你們自己去拓展咯!