iOS 彈出框總結(jié)

代碼下載地址一
代碼下載地址二

前言

在iOS應(yīng)用程序中,我們經(jīng)彻美叮看到各種各樣的彈出框赊时,比如地理信息、相冊债蜜、相機(jī)、權(quán)限的彈出框究反,圖片來源選擇彈出框寻定,信息提示彈出框,下拉彈出框等精耐。這篇文章主要總結(jié)UIPopoverController狼速、UIPopoverPresentationController、UIAlertView卦停、UIActionSheet向胡、UIAlertController的使用。

UIPopoverController

UIPopoverController是ipad上特有的界面元素惊完,用戶可以在其邊界外單擊來關(guān)閉它捷枯,在iOS9中被棄用,只能使用于iPad专执,在iPhone中奔潰淮捆!它需要一個(gè)UIViewController作為其內(nèi)容,我們應(yīng)該還會考慮彈出窗口的大小與顯示的位置本股∨嗜可以提供一個(gè)CGRect指定彈出窗口的參考位置。用popoverContentSize這個(gè)屬性來設(shè)置彈出框的大小拄显」毒叮可以通過- (void)presentPopoverFromRect:(CGRect)rect inView:(UIView *)view permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated這個(gè)方法來顯示窗口,UIPopoverArrowDirection表示箭頭的方向

Simulator Screen Shot 2016年10月24日 下午5.17.17.png
//新建一個(gè)內(nèi)容控制器
InfoViewController *infoViewController = [[InfoViewController alloc] init];
UIPopoverController *popViewController = [[UIPopoverController alloc] initWithContentViewController:infoViewController];
//設(shè)置彈出窗口大小躬审,如果屏幕畫不下棘街,會擠小的蟆盐。這個(gè)值默認(rèn)是320x1100
popViewController.popoverContentSize = CGSizeMake(200, 100);
//設(shè)置彈出窗口的參考位置
CGRect rect = CGRectMake(0, 0, 0, 0);
NSIndexPath *indexPath = [weakSelf.tableView indexPathForSelectedRow];
UITableViewCell *cell = [weakSelf.tableView cellForRowAtIndexPath:indexPath];
[popViewController presentPopoverFromRect:rect inView:cell permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];

另一種顯示的方法是- (void)presentPopoverFromBarButtonItem:(UIBarButtonItem *)item permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated,這種方式依附于導(dǎo)航欄的UIBarButtonItem上遭殉。

Simulator Screen Shot 2016年10月24日 下午5.17.20.png
 //新建一個(gè)內(nèi)容控制器
InfoViewController *infoViewController = [[InfoViewController alloc] init];
//用于任何容器布局子控制器石挂,彈出窗口的原始大小來自視圖控制器的此屬性,如果設(shè)置了此屬性那么UIPopoverController的popoverContentSize屬性會失效险污。
infoViewController.preferredContentSize = CGSizeMake(200, 200);
                                                            
UIPopoverController *popViewController = [[UIPopoverController alloc] initWithContentViewController:infoViewController];
//設(shè)置彈出窗口大小痹愚,如果屏幕畫不下,會擠小的蛔糯。這個(gè)值默認(rèn)是320x1100
popViewController.popoverContentSize = CGSizeMake(200, 100);
 /*
UIPopoverArrowDirection:箭頭方向
*/
[popViewController presentPopoverFromBarButtonItem:self.navigationItem.rightBarButtonItem permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

需要注意的是如果設(shè)置了彈出控制器的preperredContentSize屬性那么UIPopoverController的popoverContentSize屬性會失效拯腮,另外UIPopoverController有如下幾個(gè)代理方法:
用來決定用戶點(diǎn)擊了蒙版后,popoverController是否可以dismiss,返回YES代表可以蚁飒,返回NO代表不可以
-(BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
UIPopoverController消失的時(shí)候調(diào)用
-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
UIPopoverController的位置改變的時(shí)候調(diào)用(如豎屏變橫屏)
-(void)popoverController:(UIPopoverController *)popoverController willRepositionPopoverToRect:(inout CGRect *)rect inView:(inout UIView * __nonnull * __nonnull)view

UIPopoverController還有兩個(gè)比較有用的屬性动壤,isPopoverVisible屬性是只讀的,用于判斷是否彈出控制器淮逻。還有一個(gè)passthroughViews屬性琼懊,默認(rèn)情況下,UIPopoverController彈出后不允許用戶交互任何視圖彈出框外面弦蹂。passthroughViews屬性允許指定的數(shù)組UIView的實(shí)例允許用戶交互。

Simulator Screen Shot 2016年10月24日 下午5.18.03.png
 //判斷是否彈出控制器
if (weakSelf.popoverController.isPopoverVisible) {
       [weakSelf.popoverController dismissPopoverAnimated:YES];
}
 else
{
        //設(shè)置彈出窗口大小强窖,如果屏幕畫不下凸椿,會擠小的。這個(gè)值默認(rèn)是320x1100
        //popViewController.popoverContentSize = CGSizeMake(200, 100);
        //設(shè)置彈出窗口的參考位置
        CGRect rect = CGRectMake(0, 0, 0, 0);
        NSIndexPath *indexPath = [weakSelf.tableView indexPathForSelectedRow];
        UITableViewCell *cell = [weakSelf.tableView cellForRowAtIndexPath:indexPath];
        //設(shè)置可交互的預(yù)留控件
        popViewController.passthroughViews = @[cell];
        /*
        UIPopoverArrowDirection:箭頭方向
        */
        [popViewController presentPopoverFromRect:rect inView:cell permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
}

UIPopoverPresentationController

UIPopoverPresentationController適用于iPhone和ipad翅溺,不過在iPhone上展現(xiàn)形式就為普通的模態(tài)視圖脑漫,而不是彈窗的形式。UIPopoverPresentationController是UIViewController實(shí)例的屬性咙崎,不需要創(chuàng)建优幸,獲取就可以啦。它同樣需要一個(gè)UIViewController作為其內(nèi)容褪猛,通過設(shè)置UIViewController實(shí)例的modalPresentationStyle的這個(gè)屬性為UIModalPresentationPopover來使用UIPopoverPresentationController网杆,還有就是它是通過- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^ __nullable)(void))completion 方法來顯示的。其他使用方式和UIPopoverController基本差不多伊滋,列如:
sourceView屬性設(shè)置所依附的控件碳却、
sourceRect屬性設(shè)置彈出窗口對所依附的控件的參考位置、
permittedArrowDirections屬性設(shè)置箭頭方向笑旺、
passthroughViews屬性設(shè)置可交互的預(yù)留控件

Simulator Screen Shot 2016年10月27日 下午5.50.48.png
    //新建一個(gè)內(nèi)容控制器
    InfoViewController *infoViewController = [InfoViewController infoViewController];

    //用于任何容器布局子控制器昼浦,彈出窗口的原始大小來自視圖控制器的此屬性,如果設(shè)置了此屬性那么UIPopoverController的popoverContentSize屬性會失效筒主。
    infoViewController.preferredContentSize = CGSizeMake(200, 200);
    //設(shè)置模態(tài)視圖彈出的樣式
    [infoViewController setModalPresentationStyle:UIModalPresentationPopover];

    //取出點(diǎn)擊的cell
    NSIndexPath *indexPath = [weakSelf.tableView indexPathForSelectedRow];
    UITableViewCell *cell = [weakSelf.tableView cellForRowAtIndexPath:indexPath];

    //UIPopoverPresentationController是UIViewController實(shí)例的屬性关噪,不需要創(chuàng)建鸟蟹,獲取就可以啦
    UIPopoverPresentationController *presentationCtr = infoViewController.popoverPresentationController;
    //設(shè)置彈出窗口所依附的控件
    presentationCtr.sourceView = cell;
    //設(shè)置彈出窗口對所依附的控件的參考位置
    presentationCtr.sourceRect = CGRectMake(10, 10, 20, 20);
    //設(shè)置箭頭方向
    presentationCtr.permittedArrowDirections = UIPopoverArrowDirectionLeft;
    //設(shè)置代理
    presentationCtr.delegate = weakSelf;

    //彈出模態(tài)視圖
    [weakSelf presentViewController:infoViewController animated:YES completion:nil];
Simulator Screen Shot 2016年10月27日 下午5.50.50.png
      //新建一個(gè)內(nèi)容控制器
      InfoViewController *infoViewController = [InfoViewController infoViewController];
      
      //用于任何容器布局子控制器,彈出窗口的原始大小來自視圖控制器的此屬性使兔,如果設(shè)置了此屬性那么UIPopoverController的popoverContentSize屬性會失效建钥。
      infoViewController.preferredContentSize = CGSizeMake(200, 200);
      //設(shè)置模態(tài)視圖彈出的樣式
      [infoViewController setModalPresentationStyle:UIModalPresentationPopover];
      
      //UIPopoverPresentationController是UIViewController實(shí)例的屬性,不需要創(chuàng)建火诸,獲取就可以啦
      UIPopoverPresentationController *presentationCtr = infoViewController.popoverPresentationController;
      //設(shè)置所依附的UIBarButtonItem
      presentationCtr.barButtonItem = weakSelf.navigationItem.rightBarButtonItem;
      //設(shè)置箭頭方向
      presentationCtr.permittedArrowDirections = UIPopoverArrowDirectionUp;
      //設(shè)置代理
      presentationCtr.delegate = weakSelf;
      
      //彈出模態(tài)視圖
      [weakSelf presentViewController:infoViewController animated:YES completion:nil];
Simulator Screen Shot 2016年10月27日 下午5.50.55.png
      if (weakSelf.presentedViewController) {
          [weakSelf dismissViewControllerAnimated:YES completion:nil];
      }
      else
      {
          //新建一個(gè)內(nèi)容控制器
          InfoViewController *infoViewController = [InfoViewController infoViewController];
          
          //用于任何容器布局子控制器锦针,彈出窗口的原始大小來自視圖控制器的此屬性,如果設(shè)置了此屬性那么UIPopoverController的popoverContentSize屬性會失效置蜀。
          infoViewController.preferredContentSize = CGSizeMake(200, 200);
          //設(shè)置模態(tài)視圖彈出的樣式
          [infoViewController setModalPresentationStyle:UIModalPresentationPopover];
          
          //UIPopoverPresentationController是UIViewController實(shí)例的屬性奈搜,不需要創(chuàng)建,獲取就可以啦
          UIPopoverPresentationController *presentationCtr = infoViewController.popoverPresentationController;
          //設(shè)置所依附的UIBarButtonItem
          presentationCtr.barButtonItem = weakSelf.navigationItem.rightBarButtonItem;
          //設(shè)置箭頭方向
          presentationCtr.permittedArrowDirections = UIPopoverArrowDirectionUp;
          //設(shè)置代理
          presentationCtr.delegate = weakSelf;
          
          //取出點(diǎn)擊的cell
          NSIndexPath *indexPath = [weakSelf.tableView indexPathForSelectedRow];
          UITableViewCell *cell = [weakSelf.tableView cellForRowAtIndexPath:indexPath];
          
          //設(shè)置可交互的預(yù)留控件
          presentationCtr.passthroughViews = @[cell];
          
          //彈出模態(tài)視圖
          [weakSelf presentViewController:infoViewController animated:YES completion:nil];
      }

UIPopoverPresentationControllerDelegate有如下四個(gè)方法:

將要彈出的時(shí)候調(diào)用
-(void)prepareForPopoverPresentation:(UIPopoverPresentationController *)popoverPresentationController
在這個(gè)方法中設(shè)置是否允許消失
-(BOOL)popoverPresentationControllerShouldDismissPopover:(UIPopoverPresentationController *)popoverPresentationController
已經(jīng)消失的時(shí)候調(diào)用
-(void)popoverPresentationControllerDidDismissPopover:(UIPopoverPresentationController *)popoverPresentationController
用到其他UIView或者CGRect的時(shí)候調(diào)用
-(void)popoverPresentationController:(UIPopoverPresentationController *)popoverPresentationController willRepositionPopoverToRect:(inout CGRect *)rect inView:(inout UIView *__autoreleasing _Nonnull *)view

UIAlertView

UIAlertView 在iOS9中被棄用盯荤,是以彈出選擇框的形式展現(xiàn)馋吗,在iPhone和ipad中都能適用,并且展示效果一致秋秤。它的使用十分簡單:
-(instancetype)initWithTitle:(nullable NSString )title message:(nullable NSString )message delegate:(nullable id /<UIAlertViewDelegate>/)delegate cancelButtonTitle:(nullable NSString *)cancelButtonTitle otherButtonTitles:(nullable NSString *)otherButtonTitles, ... 使用這個(gè)初始化方法可以設(shè)置標(biāo)題宏粤,提示信息,代理對象和操作按鈕灼卢。
-(NSInteger)addButtonWithTitle:(nullable NSString *)title 這個(gè)方法添加按鈕绍哎。
-(nullable UITextField *)textFieldAtIndex:(NSInteger)textFieldIndex 這個(gè)方法獲取
-(void)show 這個(gè)方法用來顯示UIAlertView
numberOfButtons 這個(gè)屬性獲取按鈕的序號
visible 這個(gè)屬性是用來獲知是否顯示的
alertViewStyle 這個(gè)屬性用來設(shè)置樣式的,UIAlertView有如下4中樣式:
- UIAlertViewStyleDefault 默認(rèn)樣式鞋真,沒有熟人框
- UIAlertViewStyleSecureTextInput 有一個(gè)密碼輸入框
- UIAlertViewStylePlainTextInput 有一個(gè)普通文本輸入框
- UIAlertViewStyleLoginAndPasswordInput 有一個(gè)普通文本輸入框和一個(gè)密碼輸入框

Simulator Screen Shot 2016年10月28日 下午5.26.56.png
   UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"選擇" message:@"請選擇一個(gè)數(shù)崇堰!" delegate:weakSelf cancelButtonTitle:@"取消" otherButtonTitles:nil];
   for (int index = 0; index < 100; index++) {
       [alertView addButtonWithTitle:[NSString stringWithFormat:@"%i", index]];
   }
   [alertView show];
Simulator Screen Shot 2016年10月28日 下午5.27.01.png
   UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"登錄" message:@"請輸入賬號和密碼!" delegate:weakSelf cancelButtonTitle:@"取消" otherButtonTitles:@"登錄", nil];
   [alertView setAlertViewStyle:UIAlertViewStyleLoginAndPasswordInput];
   UITextField * firstTextField = [alertView textFieldAtIndex:0];
   firstTextField.placeholder = @"請輸入賬號涩咖!";
   UITextField * secondTextField = [alertView textFieldAtIndex:1];
   secondTextField.placeholder = @"請輸入密碼海诲!";
   
   [alertView show];

UIAlertView有如下幾個(gè)代理方法
在點(diǎn)擊按鈕的時(shí)候觸發(fā),buttonIndex為點(diǎn)擊的按鈕序號
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
在將要顯示的時(shí)候觸發(fā)
-(void)willPresentAlertView:(UIAlertView *)alertView
在已經(jīng)顯示的時(shí)候觸發(fā)
-(void)didPresentAlertView:(UIAlertView *)alertView
在將要消失的時(shí)候觸發(fā)
-(void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex
在已經(jīng)消失的時(shí)候觸發(fā)
-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
在編輯文本框后觸發(fā)
-(BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView NS_DEPRECATED_IOS(2_0, 9_0);

UIActionSheet

在iOS9中被棄用檩互,在iPhone和ipad中都能適用特幔,但展示效果不一致。它的使用也非常簡單:
-(instancetype)initWithTitle:(nullable NSString *)title delegate:(nullable id<UIActionSheetDelegate>)delegate cancelButtonTitle:(nullable NSString *)cancelButtonTitle destructiveButtonTitle:(nullable NSString *)destructiveButtonTitle otherButtonTitles:(nullable NSString *)otherButtonTitles, ... 這個(gè)初始化方法設(shè)置標(biāo)題闸昨,代理對象蚯斯,信息,取消按鈕和其他按鈕等
-(void)showFromToolbar:(UIToolbar *)view 從UIToolbar彈出
-(void)showFromTabBar:(UITabBar *)view 從UITabBar彈出
-(void)showFromBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated 從UIBarButtonItem彈出
-(void)showFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated 從UIView彈出
-(void)showInView:(UIView *)view 在UIView上彈出
說明:使用上述彈出方法iPhone上只有一種彈出效果饵较,ipad可以有不同的彈出效果

Simulator Screen Shot 2016年10月28日 下午5.27.22.png
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"圖片來源" delegate:weakSelf cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"相機(jī)", @"相冊", nil];
                                    
                                    [actionSheet showFromTabBar:weakSelf.tabBarController.tabBar];

在點(diǎn)擊按鈕的時(shí)候觸發(fā)溉跃,buttonIndex為點(diǎn)擊的按鈕序號

  • (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
    在將要彈出的時(shí)候觸發(fā)
  • (void)willPresentActionSheet:(UIActionSheet *)actionSheet
    在已經(jīng)彈出的時(shí)候觸發(fā)
  • (void)didPresentActionSheet:(UIActionSheet *)actionSheet
    在將要消失的時(shí)候觸發(fā)
  • (void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex
    在已經(jīng)消失的時(shí)候觸發(fā)
  • (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex

UIAlertController

UIAlertController 在iOS8中提供,在iPhone和ipad中都能適用告抄,但展示效果不完全一致撰茎。它的使用也十分簡單:

  • (instancetype)alertControllerWithTitle:(nullable NSString *)title message:(nullable NSString *)message preferredStyle:(UIAlertControllerStyle)preferredStyle 這個(gè)工廠方法,創(chuàng)建UIAlertController實(shí)例并設(shè)置相關(guān)屬性
    UIAlertController 有兩種風(fēng)格:
    UIAlertControllerStyleAlert打洼,和UIAlertView的樣式一致
    UIAlertControllerStyleActionSheet龄糊,和UIActionSheet的樣式一致逆粹,在ipad中是通過UIPopoverPresentationController彈出的,所以需要設(shè)置UIPopoverPresentationController的相關(guān)屬性炫惩,否則會出錯(cuò)僻弹。
  • (void)addAction:(UIAlertAction *)action 添加UIAlertAction對象
  • (void)addTextFieldWithConfigurationHandler:(void (^ __nullable)(UITextField *textField))configurationHandler 添加UITextField,這能為UIAlertControllerStyleAlert這個(gè)樣式時(shí)才能添加UITextField
    title 標(biāo)題
    message 展示信息
    preferredStyle 彈出風(fēng)格
    actions 這個(gè)只讀屬性為添加UIAlertAction對象數(shù)組
    textFields 這個(gè)只讀屬性為添加UITextField對象數(shù)組

UIAlertAction對象他嚷,就相當(dāng)于按鈕的包裝:

  • (instancetype)actionWithTitle:(nullable NSString *)title style:(UIAlertActionStyle)style handler:(void (^ __nullable)(UIAlertAction *action))handler 這個(gè)工廠方法創(chuàng)建UIAlertAction對象蹋绽,并初始化標(biāo)題,樣式筋蓖,和點(diǎn)擊操作的block
    title 標(biāo)題
    style 樣式
    UIAlertActionStyleDefault 默認(rèn)樣式
    UIAlertActionStyleCancel 取消樣式
    UIAlertActionStyleDestructive 嚴(yán)重操作樣式卸耘,為紅色的
    enabled 是否可用
Simulator Screen Shot 2016年10月28日 下午5.27.34.png
      //創(chuàng)建UIAlertController 設(shè)置標(biāo)題,信息粘咖,樣式
      UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"登錄" message:@"請輸入賬號密碼蚣抗!" preferredStyle:UIAlertControllerStyleAlert];
      
      //添加UITextField
      [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
          textField.placeholder = @"請輸入賬號!";
          //為UITextField添加監(jiān)聽事件
          [textField addTarget:weakSelf action:@selector(textFieldChane:) forControlEvents:UIControlEventEditingChanged];
      }];
      //添加UITextField
      [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
          textField.placeholder = @"請輸入密碼瓮下!";
          //為UITextField添加監(jiān)聽事件
          [textField addTarget:weakSelf action:@selector(textFieldChane:) forControlEvents:UIControlEventEditingChanged];
      }];
      
      //創(chuàng)建UIAlertAction對象翰铡,設(shè)置標(biāo)題并添加到UIAlertController上
      UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDestructive handler:nil];
      [alertController addAction:cancelAction];
      UIAlertAction *loginAction = [UIAlertAction actionWithTitle:@"登錄" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
          
      }];
      //設(shè)置UIAlertAction對象是否可用
      loginAction.enabled = NO;
      [alertController addAction:loginAction];
      
      //展現(xiàn)UIAlertController
      [weakSelf presentViewController:alertController animated:YES completion:nil];
Simulator Screen Shot 2016年10月28日 下午7.07.07.png
      //創(chuàng)建UIAlertController 設(shè)置標(biāo)題,信息讽坏,樣式
      UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"圖片來源" message:@"請?zhí)砑訄D片锭魔!" preferredStyle:UIAlertControllerStyleActionSheet];
      
      
      //創(chuàng)建UIAlertAction對象,設(shè)置標(biāo)題并添加到UIAlertController上
      UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
      [alertController addAction:cancelAction];
      UIAlertAction *photpAction = [UIAlertAction actionWithTitle:@"相冊" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
          
      }];
      [alertController addAction:photpAction];
      UIAlertAction *cameraAction = [UIAlertAction actionWithTitle:@"相機(jī)" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
          
      }];
      [alertController addAction:cameraAction];
      if (IS_IPHONE) {
      }
      else
      {
          //如果在ipad上運(yùn)行需要設(shè)置UIPopoverPresentationController的相關(guān)屬性
          UIPopoverPresentationController *popoverPresentCtr = alertController.popoverPresentationController;
          popoverPresentCtr.barButtonItem = weakSelf.navigationItem.rightBarButtonItem;
      }
      
      //展現(xiàn)UIAlertController
      [weakSelf presentViewController:alertController animated:YES completion:nil];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末路呜,一起剝皮案震驚了整個(gè)濱河市迷捧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拣宰,老刑警劉巖党涕,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烦感,死亡現(xiàn)場離奇詭異巡社,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)手趣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門晌该,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绿渣,你說我怎么就攤上這事朝群。” “怎么了中符?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵姜胖,是天一觀的道長。 經(jīng)常有香客問我淀散,道長右莱,這世上最難降的妖魔是什么蚜锨? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮慢蜓,結(jié)果婚禮上亚再,老公的妹妹穿的比我還像新娘。我一直安慰自己晨抡,他們只是感情好氛悬,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著耘柱,像睡著了一般如捅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上帆谍,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天伪朽,我揣著相機(jī)與錄音,去河邊找鬼汛蝙。 笑死烈涮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的窖剑。 我是一名探鬼主播坚洽,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼西土!你這毒婦竟也來了讶舰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤需了,失蹤者是張志新(化名)和其女友劉穎跳昼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肋乍,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹅颊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了墓造。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堪伍。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖觅闽,靈堂內(nèi)的尸體忽然破棺而出帝雇,到底是詐尸還是另有隱情,我是刑警寧澤蛉拙,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布尸闸,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏吮廉。R本人自食惡果不足惜睹栖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望茧痕。 院中可真熱鬧野来,春花似錦、人聲如沸踪旷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽令野。三九已至舀患,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間气破,已是汗流浹背聊浅。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留现使,地道東北人低匙。 一個(gè)月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像碳锈,于是被迫代替她去往敵國和親顽冶。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • { 11售碳、核心動畫 需要簽協(xié)議强重,但是系統(tǒng)幫簽好 一、CABasicAnimation 1贸人、創(chuàng)建基礎(chǔ)動畫對象 CAB...
    CYC666閱讀 1,528評論 2 4
  • 自從iOS9出來之后间景,需要使用UIAlertController來彈出彈框,不在提倡使用UIAlertView了艺智,...
    南京楊小兵閱讀 554評論 1 0
  • iOS開發(fā)系列--網(wǎng)絡(luò)開發(fā) 概覽 大部分應(yīng)用程序都或多或少會牽扯到網(wǎng)絡(luò)開發(fā)倘要,例如說新浪微博、微信等力惯,這些應(yīng)用本身可...
    lichengjin閱讀 3,639評論 2 7
  • //設(shè)置尺寸為屏幕尺寸的時(shí)候self.window = [[UIWindow alloc] initWithFra...
    LuckTime閱讀 793評論 0 0
  • 使用后的如下: 通過查看源碼碗誉。凡是只有一個(gè)待實(shí)現(xiàn)的方法的接口召嘶,都可以使用這種父晶,
    gogoingmonkey閱讀 253評論 0 0