iOS Tabbar各種定制

身為一個沒有女朋友的屌絲程序猿肌括,幸虧還有蒼老師可以想想点骑,看看。

蒼老師.png

帶小紅點的tabbar

屏幕快照 2017-04-02 下午4.35.57.png

其實這種情況比較簡單谍夭,因為系統(tǒng)給我們提供了方法

 self.navigationController.tabBarItem.badgeValue = @"1";

系統(tǒng)提供的方法下標默認是紅色黑滴,我們也可以修改顏色

self.navigationController.tabBarItem.badgeColor = [UIColor blackColor];
But

一提但是我們就知道事情還沒有結(jié)束,當我們的需求只是要求有小紅點紧索,不要數(shù)字的時候跷跪,我們系統(tǒng)給的方法就會有一些問題了。
我們設(shè)置badgeValue為空

 self.navigationController.tabBarItem.badgeValue = @"";
屏幕快照 2017-04-02 下午4.42.30.png

圓圈太大齐板,感覺好丑啊吵瞻。這個時候就需要我們來自己定制比較漂亮的小紅點了。
我們寫一個UITabbar的分類badge甘磨,里面寫一些方法來實現(xiàn)我們的功能

分類里面有兩個方法橡羞,一個是隱藏小紅點,一個是顯示小紅點

/**
 顯示小紅點

 @param index item
 */
- (void)showBadgeOnItemIndex:(int)index;

/**
 隱藏小紅點

 @param index item
 */
- (void)hidenBadgeOnItemIndex:(int)index;

在.m文件中我們寫實現(xiàn)方法

#import "UITabBar+badge.h"
#define TabbarItemNums 4.0    //tabbar的數(shù)量 如果是5個設(shè)置為5.0
@implementation UITabBar (badge)


/**
 顯示小紅點
 
 @param index item
 */
- (void)showBadgeOnItemIndex:(int)index{
    [self removeBadgeOnItemIndex:index];
    
    //新建一個小紅點
    UIView *badgeView = [[UIView alloc]init];
    badgeView.tag = 100 + index;
    badgeView.layer.cornerRadius = 5;//badge的直徑是10
    badgeView.backgroundColor = [UIColor redColor];
    //設(shè)置frame
    CGRect tabbarFrame = self.frame;
    float percentX = (index +0.6) / TabbarItemNums; 
    CGFloat x = ceilf(percentX * tabbarFrame.size.width);
    CGFloat y = ceilf(0.1 * tabbarFrame.size.height);
    badgeView.frame = CGRectMake(x, y, 10, 10);//圓形大小為10
    [self addSubview:badgeView];
 };

/**
 隱藏小紅點
 
 @param index item
 */
- (void)hidenBadgeOnItemIndex:(int)index{
    [self removeBadgeOnItemIndex:index];
};

//移除小紅點
- (void)removeBadgeOnItemIndex:(int)index{
    //按照tag值移除小紅點
    for (UIView *subView in self.subviews) {
        if (subView.tag == 100 + index) {
            [subView removeFromSuperview];
        }
    }
}

我們在需要設(shè)置時導入分類頭文件#import "UITabBar+badge.h"
調(diào)用方法

//顯示
[self.tabBarController.tabBar showBadgeOnItemIndex:2];
//隱藏
[self.tabBarController.tabBar hidenBadgeOnItemIndex:2];

效果圖如下

屏幕快照 2017-04-02 下午4.51.39.png

點擊tabbar沒有執(zhí)行系統(tǒng)事件

要想讓tabbar不執(zhí)行系統(tǒng)事件济舆,我們需要了解一下UITabBarControllerDelegate的代理事件卿泽,我們常用的有一下幾個代理事件

1、視圖將要切換時調(diào)用滋觉,viewController為將要顯示的控制器签夭,如果返回的值為NO,則無法點擊其它分欄了(viewController指代將要顯示的控制器)
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{

   NSLog(@"被選中的控制器將要顯示的按鈕");
   //return NO;不能顯示選中的控制器
   return YES;

}
 2椎侠、視圖已經(jīng)切換后調(diào)用第租,viewController 是已經(jīng)顯示的控制器

 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
  NSLog(@"視圖顯示后調(diào)用");
}
 3、將要開始自定義item的順序

- (void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers
{

      NSLog(@"將要開始自定義item時調(diào)用");

      NSLog(@"%@",viewControllers);
}
 4我纪、將要結(jié)束自定義item的順序

 - (void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed

{

       NSLog(@"將要結(jié)束自定義item時調(diào)用");

       NSLog(@"%@",viewControllers);
}

想要了解更多的關(guān)于tabbar的代理慎宾,大家可以參考這篇文章UITabBarDelegate & UITabBarControllerDelegate詳解

這里我們只需要- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController這個代理事件丐吓。使用之前需要TabBarViewController在設(shè)置代理UITabBarControllerDelegate,并且遵守代理self.delegate = self;

自定義事件一:彈出菜單按鈕
337785-633c2a620e0a127c.gif

學習之前需要先了解一個概念CABasicAnimationCABasicAnimation基礎(chǔ)動畫趟据,通過設(shè)定起始點券犁,終點,時間汹碱,動畫會沿著你這設(shè)定點進行移動粘衬。

實例化

使用方法animationWithKeyPath:對 CABasicAnimation進行實例化,并指定Layer的屬性作為關(guān)鍵路徑進行注冊咳促。

//圍繞y軸旋轉(zhuǎn)CABasicAnimation *transformAnima = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
設(shè)定動畫的屬性和說明屬性說明
20160830214514_630.png.jpeg
關(guān)鍵代碼1

遵守UITabBarControllerDelegate協(xié)議稚新,設(shè)置代理self.delegate = self;

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
   if (tabBarController.selectedIndex == 2){
       //點擊第二個的時候創(chuàng)建一個view,覆蓋整個視圖
   }
}
關(guān)鍵代碼2:動畫的執(zhí)行

其實的核心就是一個扇形等分等缀,然后根據(jù)勾股定理計算出每一個菜單的frame枷莉。我參考了這篇文章的代碼思路
CGPoint farPoint = CGPointMake(kRZPopupMenuCenterBtnCenterX + kRZPopupMenuItemFarRadius * cosf(angle), kRZPopupMenuCenterBtnCenterY + kRZPopupMenuItemFarRadius * sinf(angle));

- (void)setupMenuItems
{
    CGFloat gapAngle = kRZPopupMenuItemWholeAngle / (self.menuItems.count - 1);
    for (RZPopupMenuItem *item in self.menuItems) {
        
        CGFloat angle = kRZPopupMenuItemStartAngle + item.tag * gapAngle;
        
        item.startPoint = CGPointMake(kRZPopupMenuCenterBtnCenterX, kRZPopupMenuCenterBtnCenterY);
        
        CGPoint farPoint = CGPointMake(kRZPopupMenuCenterBtnCenterX + kRZPopupMenuItemFarRadius * cosf(angle), kRZPopupMenuCenterBtnCenterY + kRZPopupMenuItemFarRadius * sinf(angle));
        item.farPoint = RotateCGPointAroundCenter(farPoint, self.startPoint, kRZPopupMenuItemStartAngle);
        item.farPoint = farPoint;
        
         CGPoint nearPoint = CGPointMake(kRZPopupMenuCenterBtnCenterX + kRZPopupMenuItemNearRadius * cosf(angle), kRZPopupMenuCenterBtnCenterY + kRZPopupMenuItemNearRadius * sinf(angle));
        item.nearPoint = RotateCGPointAroundCenter(nearPoint, self.startPoint, kRZPopupMenuItemStartAngle);
        item.nearPoint = nearPoint;
        
        CGPoint endPoint = CGPointMake(kRZPopupMenuCenterBtnCenterX + kRZPopupMenuItemEndRadius * cosf(angle), kRZPopupMenuCenterBtnCenterY + kRZPopupMenuItemEndRadius * sinf(angle));
        item.endPoint = RotateCGPointAroundCenter(endPoint, self.startPoint, kRZPopupMenuItemStartAngle);;
        item.endPoint = endPoint;
        
        item.center = self.startPoint;
        item.width = kRZPopupMenuCenterBtnWidth;
        item.height = kRZPopupMenuCenterBtnWidth;
        
        [self insertSubview:item belowSubview:self.centerBtn];
    }
}

我把我參考的作者的代碼放在這里了,需要的朋友可以拿一下

自定義事件二:雙擊刷新

我們在用支付寶的時候娇昙,細心的同學會發(fā)現(xiàn)尺迂,我們在雙擊tabbar的時候可以刷新。其實原理很簡單冒掌,用到的代理事件跟上面的那一個一樣噪裕。

核心思路

監(jiān)聽點擊了哪一個按鈕,當點擊兩下的時候股毫,發(fā)出一個通知刷新膳音。
怎么判斷點擊了兩下

  • 可以根據(jù)時間判定,如果要是聯(lián)系點擊某一個tabbar的時間間隔小于0.5S的話铃诬,就判斷為連續(xù)點擊了兩下祭陷。
  • 可以設(shè)置一個tag值紀錄tabBarController.selectedIndex,如果兩次的tag值一樣就發(fā)出通知刷新趣席。
時間判定代碼

1兵志、先定義一個全局變量來記錄上次點擊的時間

 @property (strong, nonatomic) NSDate *lastDate;

2、 實現(xiàn)代理方法中的事件

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
    if (tabBarController.selectedIndex == 2){
      NSDate *date = [[NSDate alloc] init];
    // 處理雙擊事件
         if (date.timeIntervalSince1970 - _lastDate.timeIntervalSince1970 < 0.5) {
             //發(fā)出通知
         }
         _lastDate = date;
    }
}

3宣肚、 接收通知想罕,實現(xiàn)刷新

tag值判定代碼

1、先定義一個全局變量來記錄上次點擊了哪一個item

 @property (strong, nonatomic)NSInteger  tag;

2霉涨、 實現(xiàn)代理方法中的事件

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
    if (tabBarController.selectedIndex == 2){
        if(_tag ==tabBarController.selectedIndex ){
            //發(fā)出刷新通知
          }
     }
}

3按价、 接收通知,實現(xiàn)刷新

Tabbar按鈕變大

屏幕快照 2017-04-04 下午6.44.30.png
方案一:自定制一個button

遇到問題

  • 自定制butto的時候會有一道陰影

  • 解決方法:button.adjustsImageWhenHighlighted=NO;笙瑟,或者// 取消tabber的背景色 [[UITabBar appearance] setShadowImage:[[UIImage alloc]init]]; [[UITabBar appearance] setBackgroundImage:[[UIImage alloc]init]];

  • 導航推進下一頁的時候那個大圓按鈕不會消失

  • 解決辦法:寫一個基礎(chǔ)類baseViewController,判斷self.navigationController.viewControllers.count楼镐,當數(shù)值大于1的時候,發(fā)出一個通知隱藏大圓按鈕

核心代碼

如果button和UITabBar一樣高呢往枷,我們就包button的center和UITabBar的center對齊鸠蚪。如果button稍微高那么一點呢今阳,我們做同樣的事情,然后設(shè)定center的Y值茅信,以對應高度的差

UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(0.0, 0.0, buttonImage.size.width, buttonImage.size.height);
    [button setBackgroundImage:buttonImage forState:UIControlStateNormal];
    [button setBackgroundImage:highlightImage forState:UIControlStateHighlighted];
     
    CGFloat heightDifference = buttonImage.size.height - self.tabBar.frame.size.height;
    if (heightDifference < 0)
      button.center = self.tabBar.center;
    else
    {
      CGPoint center = self.tabBar.center;
      center.y = center.y - heightDifference/2.0;
      button.center = center;
    }
     
    [self.view addSubview:button];
方案二:采用繪制背景的方法實現(xiàn)TabBar背景
核心代碼
// 畫背景的方法盾舌,返回 Tabbar的背景  
- (UIImageView *)drawTabbarBgImageView  
{  
    NSLog(@"tabBarHeight:  %f" , tabBarHeight);// 設(shè)備tabBar高度 一般49  
    CGFloat radius = 30;// 圓半徑  
    CGFloat allFloat= (pow(radius, 2)-pow((radius-standOutHeight), 2));// standOutHeight 突出高度 12  
    CGFloat ww = sqrtf(allFloat);  
    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, -standOutHeight,ScreenW , tabBarHeight +standOutHeight)];// ScreenW設(shè)備的寬  
    //    imageView.backgroundColor = [UIColor redColor];  
    CGSize size = imageView.frame.size;  
    CAShapeLayer *layer = [CAShapeLayer layer];  
    UIBezierPath *path = [UIBezierPath bezierPath];  
    [path moveToPoint:CGPointMake(size.width/2 - ww, standOutHeight)];  
    NSLog(@"ww: %f", ww);  
    NSLog(@"ww11: %f", 0.5*((radius-ww)/radius));  
    CGFloat angleH = 0.5*((radius-standOutHeight)/radius);  
    NSLog(@"angleH:%f", angleH);  
    CGFloat startAngle = (1+angleH)*((float)M_PI); // 開始弧度  
    CGFloat endAngle = (2-angleH)*((float)M_PI);//結(jié)束弧度  
    // 開始畫弧:CGPointMake:弧的圓心  radius:弧半徑 startAngle:開始弧度 endAngle:介紹弧度 clockwise:YES為順時針蘸鲸,No為逆時針  
    [path addArcWithCenter:CGPointMake((size.width)/2, radius) radius:radius startAngle:startAngle endAngle:endAngle clockwise:YES];  
    // 開始畫弧以外的部分  
    [path addLineToPoint:CGPointMake(size.width/2+ww, standOutHeight)];  
    [path addLineToPoint:CGPointMake(size.width, standOutHeight)];  
    [path addLineToPoint:CGPointMake(size.width,size.height)];  
    [path addLineToPoint:CGPointMake(0,size.height)];  
    [path addLineToPoint:CGPointMake(0,standOutHeight)];  
    [path addLineToPoint:CGPointMake(size.width/2-ww, standOutHeight)];  
    layer.path = path.CGPath;  
    layer.fillColor = [UIColor whiteColor].CGColor;// 整個背景的顏色  
    layer.strokeColor = [UIColor colorWithWhite:0.765 alpha:1.000].CGColor;//邊框線條的顏色  
    layer.lineWidth = 0.5;//邊框線條的寬  
    // 在要畫背景的view上 addSublayer:  
    [imageView.layer addSublayer:layer];  
    return imageView;  
}  
+(CGFloat)getTabBarHeight  
{  
      
    // 獲取tabBarHeight  
    UITabBarController *tabBarController =[[UITabBarController alloc]init];  
    return CGRectGetHeight(tabBarController.tabBar.bounds);  
}  

參考自實現(xiàn)Tabbar的中間按鈕向上突出的兩種方法

方案三:使用KVC修改

1妖谴、寫一個MYTarbar繼承于UITabBar;
2酌摇、在MYTabbar 上加一個按鈕膝舅,設(shè)置按鈕的image、size窑多,中心點在tabbar的中心點仍稀,按鈕點擊事件可用delegate或者block傳遞;
3埂息、在layoutSubviews重新排布MYTarbar上的UITabBarButton的frame(size.width技潘,origin.x);

需要注意點:是超出tabbar部分沒有點擊事件千康,我們需要擴大點擊相應

/**
 重寫hitTest方法享幽,去監(jiān)聽中間按鈕的點擊,目的是為了讓凸出的部分點擊也有反應

 @param point 點擊point
 @param event 事件
 @return view
 */
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

    //判斷當前手指是否點擊到中間按鈕上拾弃,如果是值桩,則響應按鈕點擊,其他則系統(tǒng)處理
    //首先判斷當前View是否被隱藏了豪椿,隱藏了就不需要處理了
    if (self.isHidden == NO) {

        //將當前tabbar的觸摸點轉(zhuǎn)換坐標系奔坟,轉(zhuǎn)換到中間按鈕的身上,生成一個新的點
        CGPoint newP = [self convertPoint:point toView:self.centerBtn];

        //判斷如果這個新的點是在中間按鈕身上搭盾,那么處理點擊事件最合適的view就是中間按鈕
        if ( [self.centerBtn pointInside:newP withEvent:event]) {
            return self.centerBtn;
        }
    }

    return [super hitTest:point withEvent:event];
}

代碼

#import <UIKit/UIKit.h>
typedef void(^MYTabbarClickBlock)();

@interface MYTabbar : UITabBar

- (void)setBtnClickBlock:(MYTabbarClickBlock)block;

@end


#import "MYTabbar.h"


@interface MYTabbar ()

@property (nonatomic, strong) UIButton *centerBtn;
@property (nonatomic, copy  ) MYTabbarClickBlock block;

@end
@implementation MYTabbar

- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        self.backgroundColor = [UIColor blueColor];
        [self setBackgroundImage:[UIImage new]];
        [self setShadowImage:[UIImage new]];

        self.centerBtn = [[UIButton alloc]init];
        [self.centerBtn setBackgroundImage:[UIImage imageNamed:@"tab_launch"]
                                  forState:UIControlStateNormal];
        [self.centerBtn setBackgroundImage:[UIImage imageNamed:@"tab_launch"]
                                  forState:UIControlStateHighlighted];
        self.centerBtn.size = self.centerBtn.currentBackgroundImage.size;
        [self.centerBtn addTarget:self action:@selector(centerBtnDidClick) forControlEvents:UIControlEventTouchUpInside];
        [self addSubview:self.centerBtn];
    }
    return self;
}

- (void)centerBtnDidClick {
    if (self.block) {
        self.block();
    }
}
- (void)setBtnClickBlock:(ICETabBarClickBlock)block {
    self.block = block;
}

- (void)layoutSubviews {
    [super layoutSubviews];
    //系統(tǒng)自帶的按鈕類型是UITabBarButton咳秉,找出這些類型的按鈕,然后重新排布位置增蹭,空出中間的位置
    Class class = NSClassFromString(@"UITabBarButton");

    self.centerBtn.centerX = self.centerX;
    //調(diào)整中間按鈕的中線點Y值
    self.centerBtn.centerY = (self.height - (self.centerBtn.height - self.height)) * 0.5;

    NSInteger btnIndex = 0;
    for (UIView *btn in self.subviews) {//遍歷tabbar的子控件
        if ([btn isKindOfClass:class]) {//如果是系統(tǒng)的UITabBarButton滴某,那么就調(diào)整子控件位置,空出中間位置
            //按鈕寬度為TabBar寬度減去中間按鈕寬度的一半
            btn.width = (self.width - self.centerBtn.width) * 0.5;
            //中間按鈕前的寬度,這里就3個按鈕滋迈,中間按鈕Index為1
            if (btnIndex < 1) {
                btn.x = btn.width * btnIndex;
            } else { //中間按鈕后的寬度
                btn.x = btn.width * btnIndex + self.centerBtn.width;
            }

            btnIndex++;
            //如果是索引是0(從0開始的)霎奢,直接讓索引++,目的就是讓消息按鈕的位置向右移動饼灿,空出來中間按鈕的位置
            if (btnIndex == 0) {
                btnIndex++;
            }
        }
    }
    [self bringSubviewToFront:self.centerBtn];
}


/**
 重寫hitTest方法幕侠,去監(jiān)聽中間按鈕的點擊,目的是為了讓凸出的部分點擊也有反應

 @param point 點擊point
 @param event 事件
 @return view
 */
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

    //判斷當前手指是否點擊到中間按鈕上碍彭,如果是晤硕,則響應按鈕點擊悼潭,其他則系統(tǒng)處理
    //首先判斷當前View是否被隱藏了,隱藏了就不需要處理了
    if (self.isHidden == NO) {

        //將當前tabbar的觸摸點轉(zhuǎn)換坐標系舞箍,轉(zhuǎn)換到中間按鈕的身上舰褪,生成一個新的點
        CGPoint newP = [self convertPoint:point toView:self.centerBtn];

        //判斷如果這個新的點是在中間按鈕身上,那么處理點擊事件最合適的view就是中間按鈕
        if ( [self.centerBtn pointInside:newP withEvent:event]) {
            return self.centerBtn;
        }
    }

    return [super hitTest:point withEvent:event];
}

調(diào)用方法

//利用kvc將系統(tǒng)的tabbar替換成ICETabbar
    MYTabbar *tabbar = [[MYTabbar alloc]init];
    [self setValue:tabbar forKey:@"tabBar"];

    [tabbar setBtnClickBlock:^{
        NSLog(@"click Center");
    }];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疏橄,一起剝皮案震驚了整個濱河市占拍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捎迫,老刑警劉巖晃酒,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異窄绒,居然都是意外死亡贝次,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門彰导,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛔翅,“玉大人,你說我怎么就攤上這事螺戳「楸觯” “怎么了折汞?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵倔幼,是天一觀的道長。 經(jīng)常有香客問我爽待,道長损同,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任鸟款,我火速辦了婚禮膏燃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘何什。我一直安慰自己组哩,他們只是感情好,可當我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布处渣。 她就那樣靜靜地躺著伶贰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪罐栈。 梳的紋絲不亂的頭發(fā)上黍衙,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天,我揣著相機與錄音荠诬,去河邊找鬼琅翻。 笑死位仁,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的方椎。 我是一名探鬼主播聂抢,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼棠众!你這毒婦竟也來了涛浙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤摄欲,失蹤者是張志新(化名)和其女友劉穎轿亮,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胸墙,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡我注,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了迟隅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片但骨。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖智袭,靈堂內(nèi)的尸體忽然破棺而出奔缠,到底是詐尸還是另有隱情,我是刑警寧澤吼野,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布校哎,位于F島的核電站,受9級特大地震影響瞳步,放射性物質(zhì)發(fā)生泄漏闷哆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一单起、第九天 我趴在偏房一處隱蔽的房頂上張望抱怔。 院中可真熱鬧,春花似錦嘀倒、人聲如沸屈留。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽灌危。三九已至,卻和暖如春帮寻,著一層夾襖步出監(jiān)牢的瞬間乍狐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工固逗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留浅蚪,地道東北人藕帜。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像惜傲,于是被迫代替她去往敵國和親洽故。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,876評論 2 361

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫盗誊、插件时甚、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,124評論 4 61
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,332評論 25 707
  • 將近早上七點的時候,簡單才匆匆忙忙從床上滾了起來哈踱,囫圇一頓洗漱荒适,五分鐘之后,簡單帶著公文包沖出了房門开镣。兩分...
    clmiberf閱讀 276評論 0 1
  • 春天,是敏感易發(fā)的季節(jié)树埠,而保濕噴霧就是舒緩皮膚發(fā)紅發(fā)癢的寶貝糠馆!夏天雖然熱,易出油出汗但是呆在干燥的空調(diào)房里也是離不...
    愛芒果閱讀 537評論 0 0