雷達(dá)和脈沖掃描圖

DDYRadarView.png
DDYPulseView.png

請關(guān)注,防止你用了洼怔,我改了,有問題連個商量的人都找不到...

雷達(dá)掃描圖

DDYRadarView.h

#import <UIKit/UIKit.h>

@class DDYRadarView;
@class DDYRadarPointView;

//------------------------ 數(shù)據(jù)代理 ------------------------//
@protocol DDYRadarViewDataSource <NSObject>
@optional
/** 點(diǎn)位數(shù)量 最大為8 */
- (NSInteger)numberOfPointInRadarView:(DDYRadarView *)radarView;
/** 點(diǎn)位視圖 */
- (DDYRadarPointView *)radarView:(DDYRadarView *)radarView viewForIndex:(NSInteger)index;
/** 點(diǎn)位圖片 */
- (UIImage *)radarView:(DDYRadarView *)radarView imageForIndex:(NSInteger)index;

@end

//------------------------ 視圖代理 ------------------------//
@protocol DDYRadarViewDelegate <NSObject>
@optional
/** 點(diǎn)擊點(diǎn)位回調(diào) */
- (void)radarView:(DDYRadarView *)radarView didSelectItemAtIndex:(NSInteger)index;

@end

//----------------------- 點(diǎn)位頭像視圖 -----------------------//
@interface DDYRadarPointView : UIView

@property (nonatomic, strong) UIImage *image;

@end

//------------------------ 扇形指示器 ------------------------//
@interface DDYRadarIndicatorView : UIView

@end

//------------------------- 雷達(dá)視圖 -------------------------//
@interface DDYRadarView : UIView

/** 數(shù)據(jù)源代理 */
@property (nonatomic, weak) id <DDYRadarViewDataSource> dataSource;
/** 視圖代理 */
@property (nonatomic, weak) id <DDYRadarViewDelegate> delegate;

/** 同心圓半徑 */
@property (nonatomic, assign) CGFloat radius;
/** 同心圓個數(shù) */
@property (nonatomic, assign) NSInteger circleNumber;
/** 同心圓邊框顏色 */
@property (nonatomic, strong) UIColor *circleColor;
/** 指示器開始顏色 */
@property (nonatomic, strong) UIColor *indicatorStartColor;
/** 指示器結(jié)束顏色 */
@property (nonatomic, strong) UIColor *indicatorEndColor;
/** 是否順時(shí)針方向 */
@property (nonatomic, assign) BOOL indicatorClockwise;
/** 指示器角度大小 */
@property (nonatomic, assign) CGFloat indicatorAngle;
/** 指示器旋轉(zhuǎn)速度 */
@property (nonatomic, assign) CGFloat indicatorSpeed;
/** 視圖背景圖片 */
@property (nonatomic, strong) UIImage *backgroundImage;
/** 顯示虛分割線 */
@property (nonatomic, assign) BOOL showSeparator;

/** 雷達(dá)視圖對象 */
+ (instancetype)radarView;
/** 開始動畫 */
- (void)startScanAnimation;
/** 結(jié)束動畫 */
- (void)stopScanAnimation;
/** 刷新以展示數(shù)據(jù) */
- (void)reloadData;

@end

DDYRadarView.m

#import "DDYRadarView.h"
#import <QuartzCore/QuartzCore.h>

//----------------------- 點(diǎn)位頭像視圖 -----------------------//
@implementation DDYRadarPointView

- (void)drawRect:(CGRect)rect {
    [super drawRect:rect];
    [_image drawInRect:self.bounds];
}

- (void)setImage:(UIImage *)image {
    _image = image;
    [self setNeedsDisplay];
}

@end

//------------------------ 扇形指示器 ------------------------//
@interface DDYRadarIndicatorView ()
/** 半徑 */
@property (nonatomic, assign) CGFloat radius;
/** 指示器開始顏色 */
@property (nonatomic, strong) UIColor *startColor;
/** 指示器結(jié)束顏色 */
@property (nonatomic, strong) UIColor *endColor;
/** 指示器角度 */
@property (nonatomic, assign) CGFloat angle;
/** 是否是否順時(shí)針 */
@property (nonatomic, assign) BOOL clockwise;

@end

@implementation DDYRadarIndicatorView

- (void)drawRect:(CGRect)rect {
    [super drawRect:rect];
    // 畫布
    CGContextRef context = UIGraphicsGetCurrentContext();
    
    // 漸變色
    const CGFloat *startColorComponents = CGColorGetComponents(_startColor.CGColor);
    const CGFloat *endColorComponents = CGColorGetComponents(_endColor.CGColor);
    for (int i=0; i<_angle; i++) {
        CGFloat ratio = (_clockwise?(_angle-i):i)/_angle;
        CGFloat r = startColorComponents[0] - (startColorComponents[0]-endColorComponents[0])*ratio;
        CGFloat g = startColorComponents[1] - (startColorComponents[1]-endColorComponents[1])*ratio;
        CGFloat b = startColorComponents[2] - (startColorComponents[2]-endColorComponents[2])*ratio;
        CGFloat a = startColorComponents[3] - (startColorComponents[3]-endColorComponents[3])*ratio;
        
        // 畫扇形
        CGContextSetFillColorWithColor(context, DDYColor(r, g, b, a).CGColor);
        CGContextSetLineWidth(context, 0);
        CGContextMoveToPoint(context, self.center.x, self.center.y);
        CGContextAddArc(context, self.center.x, self.center.y, _radius,  i*M_PI/180, (i + (_clockwise?-1:1))*M_PI/180, _clockwise);
        CGContextDrawPath(context, kCGPathFillStroke);
    }
}

@end

//------------------------- 雷達(dá)視圖 -------------------------//
@interface DDYRadarView ()

@property (nonatomic, strong) DDYRadarIndicatorView *indicatorView;

@property (nonatomic, strong) UIView *pointsView;

@end

@implementation DDYRadarView

+ (instancetype)radarView {
    return [[self alloc] initWithFrame:[UIScreen mainScreen].bounds];
}

- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        [self prepare];
        [self addSubview:self.indicatorView];
    }
    return self;
}

- (void)prepare {
    _radius = self.ddy_w/2.-20;
    _circleNumber = 3;
    _circleColor = DDY_White;
    _indicatorStartColor = DDY_Blue;
    _indicatorEndColor = DDY_ClearColor;
    _indicatorClockwise = YES;
    _indicatorAngle = 360;
    _indicatorSpeed = 90;
    _backgroundImage = [UIImage imageWithColor:DDY_Gray size:DDYSCREENSIZE];
    _showSeparator = YES;
}

- (DDYRadarIndicatorView *)indicatorView {
    if (!_indicatorView) {
        _indicatorView = [[DDYRadarIndicatorView alloc] initWithFrame:self.bounds];
        _indicatorView.backgroundColor = DDY_ClearColor;
    }
    return _indicatorView;
}

- (void)resetIndicatorView {
    _indicatorView.radius = _radius;
    _indicatorView.angle = _indicatorAngle;
    _indicatorView.clockwise = _indicatorClockwise;
    _indicatorView.startColor = _indicatorStartColor;
    _indicatorView.endColor = _indicatorEndColor;
}

- (UIView *)pointsView {
    if (!_pointsView) {
        _pointsView = [[UIView alloc] initWithFrame:self.bounds].viewBGColor(DDY_ClearColor);
        [self insertSubview:_pointsView aboveSubview:self.indicatorView];
    }
    return _pointsView;
}

- (void)drawCircle {
    CGContextRef context = UIGraphicsGetCurrentContext();
    for (int i=0; i<_circleNumber; i++) {
        CGContextSetStrokeColorWithColor(context, _circleColor.CGColor);
        CGContextSetLineWidth(context, 1.);
        CGContextAddArc(context, self.center.x, self.center.y, _radius*(i+1)/_circleNumber, 0, 2*M_PI, 0);
        CGContextDrawPath(context, kCGPathStroke);
    }
}

- (void)drawSeparator {
    // 繪制
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetStrokeColorWithColor(context, _circleColor.CGColor);
    CGContextSetLineWidth(context, .7);
    CGFloat length1[] = {5, 5};
    CGContextSetLineDash(context, 0, length1, 2);
    
    for (int i=0; i<4; i++) {
        CGContextMoveToPoint(context, self.center.x+sinf(i*M_PI_4)*_radius, self.center.y-cosf(i*M_PI_4)*_radius);
        CGContextAddLineToPoint(context, self.center.x+sinf((i+4)*M_PI_4)*_radius, self.center.y-cosf((i+4)*M_PI_4)*_radius);
    }
    CGContextStrokePath(context);
}

- (void)drawRect:(CGRect)rect {
    [super drawRect:rect];
    [_backgroundImage drawInRect:self.bounds];
    [self resetIndicatorView];
    [self drawCircle];
    [self drawSeparator];
}

- (void)startScanAnimation {
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    animation.toValue = [NSNumber numberWithFloat:(_indicatorClockwise?1:-1) * M_PI * 2.];
    animation.duration = 360.f/_indicatorSpeed;
    animation.cumulative = YES;
    animation.repeatCount = INT_MAX;
    animation.removedOnCompletion = NO;
    animation.fillMode = kCAFillModeForwards;
    [self.indicatorView.layer addAnimation:animation forKey:@"rotationAnimation"];
}

- (void)stopScanAnimation {
    [self.indicatorView.layer removeAnimationForKey:@"rotationAnimation"];
}

#pragma mark 刷新以展示數(shù)據(jù)
- (void)reloadData
{
    [self.pointsView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
    
    if ([self.dataSource respondsToSelector:@selector(numberOfPointInRadarView:)])
    {
        for (int index=0; index<MIN([self.dataSource numberOfPointInRadarView:self], 8); index++)
        {
            DDYRadarPointView *pointView;
            if ([self.dataSource respondsToSelector:@selector(radarView:viewForIndex:)])
            {
                pointView = [self.dataSource radarView:self viewForIndex:index];
            }
            else if ([self.dataSource respondsToSelector:@selector(radarView:imageForIndex:)])
            {
                if ([self.dataSource radarView:self imageForIndex:index]) {
                    pointView = [[DDYRadarPointView alloc] init];
                    pointView.image = [self.dataSource radarView:self imageForIndex:index];
                }
            }
            if (pointView) {
                pointView.ddy_size = CGSizeMake(40, 40);
                pointView.center = [self pointWithIndex:index];
                pointView.tag = 100+index;
                [pointView addTapTarget:self action:@selector(handleTopPointView:)];
                [self.pointsView addSubview:pointView];
                DDYBorderRadius(pointView, pointView.ddy_w/2., .7, DDY_White);
            }
        }
        
    }
}

#pragma mark 點(diǎn)位數(shù)組
- (CGPoint)pointWithIndex:(NSInteger)index {
    CGPoint points[8];
    CGFloat radiusBig = _radius;
    CGFloat radiusMid = ((_circleNumber-1)*_radius/_circleNumber);
    points[0] = CGPointMake(self.center.x+sinf(0*M_PI_4)*radiusBig, self.center.y-cosf(0*M_PI_4)*radiusBig);
    points[1] = CGPointMake(self.center.x+sinf(4*M_PI_4)*radiusBig, self.center.y-cosf(4*M_PI_4)*radiusBig);
    points[2] = CGPointMake(self.center.x+sinf(6*M_PI_4)*radiusBig, self.center.y-cosf(6*M_PI_4)*radiusBig);
    points[3] = CGPointMake(self.center.x+sinf(2*M_PI_4)*radiusBig, self.center.y-cosf(2*M_PI_4)*radiusBig);
    points[4] = CGPointMake(self.center.x+sinf(1*M_PI_4)*radiusMid, self.center.y-cosf(1*M_PI_4)*radiusMid);
    points[5] = CGPointMake(self.center.x+sinf(3*M_PI_4)*radiusMid, self.center.y-cosf(3*M_PI_4)*radiusMid);
    points[6] = CGPointMake(self.center.x+sinf(7*M_PI_4)*radiusMid, self.center.y-cosf(7*M_PI_4)*radiusMid);
    points[7] = CGPointMake(self.center.x+sinf(5*M_PI_4)*radiusMid, self.center.y-cosf(5*M_PI_4)*radiusMid);
    return points[index];
}

- (void)handleTopPointView:(UITapGestureRecognizer *)gesture {
    if ([self.delegate respondsToSelector:@selector(radarView:didSelectItemAtIndex:)]) {
        [self.delegate radarView:self didSelectItemAtIndex:gesture.view.tag-100];
    }
}

#pragma mark - setter
#pragma mark 同心圓半徑
- (void)setRadius:(CGFloat)radius {
    _radius = radius;
    [self setNeedsDisplay];
}

#pragma mark 同心圓個數(shù)
- (void)setCircleNumber:(NSInteger)circleNumber {
    _circleNumber = circleNumber;
    [self setNeedsDisplay];
}
#pragma mark 同心圓邊框顏色
- (void)setCircleColor:(UIColor *)circleColor {
    _circleColor = circleColor;
    [self setNeedsDisplay];
}

#pragma mark 指示器開始顏色
- (void)setIndicatorStartColor:(UIColor *)indicatorStartColor {
    _indicatorStartColor = indicatorStartColor;
    [self setNeedsDisplay];
}

#pragma mark 指示器結(jié)束顏色
- (void)setIndicatorEndColor:(UIColor *)indicatorEndColor {
    _indicatorEndColor = indicatorEndColor;
    [self setNeedsDisplay];
}

#pragma mark 是否順時(shí)針方向
- (void)setIndicatorClockwise:(BOOL)indicatorClockwise {
    _indicatorClockwise = indicatorClockwise;
    [self setNeedsDisplay];
}

#pragma mark 指示器角度大小
- (void)setIndicatorAngle:(CGFloat)indicatorAngle {
    _indicatorAngle = indicatorAngle;
    [self setNeedsDisplay];
}

#pragma mark 指示器旋轉(zhuǎn)速度
- (void)setIndicatorSpeed:(CGFloat)indicatorSpeed {
    _indicatorSpeed = indicatorSpeed;
    [self setNeedsDisplay];
}

#pragma mark 視圖背景圖片
- (void)setBackgroundImage:(UIImage *)backgroundImage {
    _backgroundImage = backgroundImage;
    [self setNeedsDisplay];
}

#pragma mark 顯示虛分割線
- (void)setShowSeparator:(BOOL)showSeparator {
    _showSeparator = showSeparator;
    [self setNeedsDisplay];
}

@end

應(yīng)用DDYRadarVC.m

#import "DDYRadarVC.h"

@interface DDYRadarVC ()<DDYRadarViewDataSource, DDYRadarViewDelegate>

@property (nonatomic, strong) DDYRadarView *radarView;

@end

@implementation DDYRadarVC

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self.radarView startScanAnimation];
    [self.radarView reloadData];
    [self addObserverActive];
}

- (DDYRadarView *)radarView {
    if (!_radarView) {
        _radarView = [DDYRadarView radarView];
        _radarView.dataSource = self;
        _radarView.delegate = self;
        [self.view addSubview:self.radarView];
    }
    return _radarView;
}

- (NSInteger)numberOfPointInRadarView:(DDYRadarView *)radarView {
    return 8;
}

- (UIImage *)radarView:(DDYRadarView *)radarView imageForIndex:(NSInteger)index {
    return [UIImage imageWithColor:DDYRandomColor size:CGSizeMake(40, 40)];
}

- (void)radarView:(DDYRadarView *)radarView didSelectItemAtIndex:(NSInteger)index {
    DDYLog(@"click index:%ld",index);
}

#pragma mark 監(jiān)聽掛起和重新進(jìn)入程序
#pragma mark 添加監(jiān)聽
- (void)addObserverActive
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillResignActive:)
                                                 name:UIApplicationWillResignActiveNotification object:nil]; //監(jiān)聽home鍵掛起.
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive:)
                                                 name:UIApplicationDidBecomeActiveNotification object:nil];  //監(jiān)聽重新進(jìn)入程序.
}

#pragma mark 進(jìn)入前臺
- (void)applicationDidBecomeActive:(UIApplication *)application
{
    [self.radarView startScanAnimation];
}

#pragma mark 掛起程序
- (void)applicationWillResignActive:(UIApplication *)application
{
    [self.radarView stopScanAnimation];
}

@end

脈沖掃描圖

DDYPulseView.h

#import <UIKit/UIKit.h>

//------------------------ 圓形視圖 ------------------------//
@interface DDYPulseCircleView : UIView

@end

//------------------------ 脈沖視圖 ------------------------//
@interface DDYPulseView : UIView

/** 填充顏色 */
@property (nonatomic, strong) UIColor *fillColor;
/** 線條顏色 */
@property (nonatomic, strong) UIColor *strokeColor;
/** 最小圓半徑 */
@property (nonatomic, assign) CGFloat minRadius;

/** 創(chuàng)建對象 */
+ (instancetype)pulseView;

/** 開始動畫 */
- (void)startAnimation;

/** 結(jié)束動畫 */
 - (void)stopAnimation;

@end

DDYPulseView.m

#import "DDYPulseView.h"

//------------------------ 圓形視圖 ------------------------//
@interface DDYPulseCircleView ()
/** 填充顏色 */
@property (nonatomic, strong) UIColor *fillColor;
/** 線條顏色 */
@property (nonatomic, strong) UIColor *strokeColor;
/** 初始最小半徑 */
@property (nonatomic, assign) CGFloat minRadius;

@end

@implementation DDYPulseCircleView

- (void)drawRect:(CGRect)rect {
    [super drawRect:rect];
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetStrokeColorWithColor(context, _strokeColor.CGColor);
    CGContextSetFillColorWithColor(context, _fillColor.CGColor);
    CGContextAddArc(context, self.center.x, self.center.y, _minRadius, 0, 2*M_PI, 0);
    CGContextFillPath(context);
    CGContextDrawPath(context, kCGPathStroke);
}

@end

//------------------------ 脈沖視圖 ------------------------//
@interface DDYPulseView ()

@property (strong, nonatomic) NSTimer *timer;

@end

@implementation DDYPulseView

+ (instancetype)pulseView {
    return [[self alloc] initWithFrame:[UIScreen mainScreen].bounds];
}

- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        [self prepare];
    }
    return self;
}

- (void)prepare {
    _fillColor = [UIColor colorWithRed:23/255.0 green:1.0 blue:1.0 alpha:1.0];
    _strokeColor = [UIColor colorWithRed:23/255.0 green:1.0 blue:1.0 alpha:1.0];
    _minRadius = 30;
}

#pragma mark 開啟定時(shí)器 開始動畫
- (void)startAnimation {
    [self stopAnimation];
    self.timer = [NSTimer scheduledTimerWithTimeInterval:0.6 target:self selector:@selector(radarAnimation) userInfo:nil repeats:YES];
    [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
}

#pragma mark 結(jié)束動畫
- (void)stopAnimation {
    if (self.timer) {
        [self.timer invalidate];
        self.timer = nil;
    }
}

#pragma mark 掃描動畫
- (void)radarAnimation
{
    DDYPulseCircleView *circleView = [[DDYPulseCircleView alloc] initWithFrame:self.bounds];
    circleView.backgroundColor = DDY_ClearColor;
    circleView.fillColor = _fillColor;
    circleView.strokeColor = _strokeColor;
    circleView.minRadius = _minRadius;
    [self addSubview:circleView];
    
    [UIView animateWithDuration:3 animations:^{
        circleView.transform = CGAffineTransformScale(circleView.transform, DDYSCREENW/2/30, DDYSCREENW/2/30);
        circleView.alpha = 0;
    } completion:^(BOOL finished) {
        [circleView removeFromSuperview];
    }];
}

#pragma mark - setter
#pragma mark 填充色
- (void)setFillColor:(UIColor *)fillColor {
    _fillColor = fillColor;
    [self startAnimation];
}

#pragma mark 同心圓線條顏色
- (void)setStrokeColor:(UIColor *)strokeColor {
    _strokeColor = strokeColor;
    [self startAnimation];
}

#pragma mark 最小圓半徑
- (void)setMinRadius:(CGFloat)minRadius {
    _minRadius = minRadius;
    [self startAnimation];
}

- (void)dealloc {
    [self stopAnimation];
}

@end

應(yīng)用 DDYPulseVC.m

#import "DDYPulseVC.h"

@interface DDYPulseVC ()

@property (nonatomic, strong) DDYPulseView *pulseView;

@end

@implementation DDYPulseVC

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.pulseView startAnimation];
    self.pulseView.fillColor = APP_MAIN_COLOR;
    self.pulseView.strokeColor = APP_MAIN_COLOR;
    self.pulseView.minRadius = 30;
}

- (DDYPulseView *)pulseView {
    if (!_pulseView) {
        _pulseView = [DDYPulseView pulseView];
        [self.view addSubview:_pulseView];
    }
    return _pulseView;
}

@end

碼農(nóng)不易點(diǎn)星星 scan DDYRadarView code
碼農(nóng)不易點(diǎn)星星 scan DDYPulseView code

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市搓蚪,隨后出現(xiàn)的幾起案子郭蕉,更是在濱河造成了極大的恐慌疼邀,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件召锈,死亡現(xiàn)場離奇詭異旁振,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)涨岁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門拐袜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人梢薪,你說我怎么就攤上這事蹬铺。” “怎么了秉撇?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵甜攀,是天一觀的道長秋泄。 經(jīng)常有香客問我,道長规阀,這世上最難降的妖魔是什么恒序? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮谁撼,結(jié)果婚禮上奸焙,老公的妹妹穿的比我還像新娘。我一直安慰自己彤敛,他們只是感情好与帆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著墨榄,像睡著了一般玄糟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上袄秩,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天阵翎,我揣著相機(jī)與錄音,去河邊找鬼之剧。 笑死郭卫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的背稼。 我是一名探鬼主播贰军,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蟹肘!你這毒婦竟也來了词疼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤帘腹,失蹤者是張志新(化名)和其女友劉穎贰盗,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阳欲,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舵盈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了球化。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秽晚。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赊窥,靈堂內(nèi)的尸體忽然破棺而出爆惧,到底是詐尸還是另有隱情,我是刑警寧澤锨能,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布扯再,位于F島的核電站,受9級特大地震影響址遇,放射性物質(zhì)發(fā)生泄漏熄阻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一倔约、第九天 我趴在偏房一處隱蔽的房頂上張望秃殉。 院中可真熱鬧,春花似錦浸剩、人聲如沸钾军。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吏恭。三九已至,卻和暖如春重罪,著一層夾襖步出監(jiān)牢的瞬間樱哼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工剿配, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留搅幅,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓呼胚,卻偏偏與公主長得像茄唐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蝇更,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,116評論 25 707
  • 導(dǎo)語: 如果你已經(jīng)加入了iOS攻城獅隊(duì)伍琢融,那么我們由衷地祝賀您正式成為一名終身學(xué)習(xí)的程序猿;有人覺得這句話...
    超人猿閱讀 2,297評論 3 19
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理簿寂,服務(wù)發(fā)現(xiàn)漾抬,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 曾經(jīng)的那個你 喜歡上課偷偷寫情書 字體連自己都不忍直視 還是下課鼓起勇氣 送給那個白衣女孩 想說那句話 確怎么也說...
    我是小梁啊閱讀 230評論 0 1
  • 一早跟韋寶一起出門常遂,他去搭鄰居家的車纳令,我去上班。他跟我說克胳,媽媽你能不能陪我一起去等車平绩?我說不行啊,我還要趕著去上班...
    韋寶媽育兒手記閱讀 114評論 0 1