ios 可拖動(dòng)蹈集、點(diǎn)擊漸變圓環(huán)

年前忙著趕項(xiàng)目桥状,也沒時(shí)間更新,現(xiàn)在告一段落戏罢,把用到的技術(shù)點(diǎn)總結(jié)總結(jié)屋谭,這篇介紹介紹可自由拖動(dòng)圓環(huán)的使用.
最開始我認(rèn)為無(wú)非就是簡(jiǎn)單的動(dòng)畫效果,與下圖差不多(項(xiàng)目實(shí)際效果圖)龟糕,后來(lái)才發(fā)現(xiàn)并非那么簡(jiǎn)單桐磁!


ptyhgif.gif

先來(lái)看看我們項(xiàng)目中的效果圖

shoujigif2.gif

最開始我是想著使用UIView來(lái)實(shí)現(xiàn),后來(lái)發(fā)現(xiàn)有些方法只能使用UIView的子類UIControl來(lái)實(shí)現(xiàn)讲岁,所以自定義視圖類繼承的是UIControl而非UIView我擂!
如果想實(shí)現(xiàn)漸變色滑動(dòng)圓環(huán),我們要先畫出底圓

-(id)initWithFrame:(CGRect)frame lineWidth:(CGFloat)lineWidth circleAngle:(CGFloat)circleAngle imageName:(NSString *)imageName
{
    if ([super initWithFrame:frame]) {
        // 線寬
        _lineWidth = lineWidth;
        // 半徑
        radius = self.frame.size.width/2 - _lineWidth/2;
        // 圓起點(diǎn)(角度)
        self.startAngle = -((circleAngle - 180)/2 + 180);
        // 圓終點(diǎn) (角度)
        self.endAngle = (circleAngle - 180)/2;

        self.imagev.image = [UIImage imageNamed:imageName];
        self.backgroundColor = [UIColor clearColor];
    }
    return self;
}

#pragma mark - 繪制圖形
- (void)drawRect:(CGRect)rect {
    [super drawRect:rect];

    CGContextRef context = UIGraphicsGetCurrentContext();

    //1.繪制灰色的背景
    CGContextAddArc(context, self.frame.size.width/2, self.frame.size.height/2, radius, degreesToRadians(self.startAngle),degreesToRadians(self.endAngle) , 0);
    [[UIColor colorWithHexString:@"f2f2f2"] setStroke];
    CGContextSetLineWidth(context, _lineWidth);
    CGContextSetLineCap(context, kCGLineCapRound);
    CGContextDrawPath(context, kCGPathStroke);
}


這樣我們就繪制了最底層的灰色圓形背景

WechatIMG4720.jpeg

然后就是繪制顏色漸變效果:
接著上面的代碼

// 設(shè)置線寬
CGContextSetLineWidth(context, _lineWidth);
// 設(shè)置線條端點(diǎn)為圓角
CGContextSetLineCap(context, kCGLineCapRound);
// 設(shè)置畫筆顏色
CGContextSetFillColorWithColor(context, [UIColor blackColor].CGColor);
//繪制圓淮呤住(這里終點(diǎn)使用的是_angle所以效果圖你看到的是一半圓弧扶踊,如果使用self.endAngle就是全部了)
CGContextAddArc(context, self.frame.size.width/2, self.frame.size.height/2,radius,degreesToRadians(self.startAngle), degreesToRadians(_angle), 0);



//使用rgb顏色空間
CGColorSpaceRef colorSpace=CGColorSpaceCreateDeviceRGB();

/*指定漸變色
 space:顏色空間
 components:顏色數(shù)組,注意由于指定了RGB顏色空間,那么四個(gè)數(shù)組元素表示一個(gè)顏色(red郎任、green秧耗、blue、alpha)舶治,
 如果有三個(gè)顏色則這個(gè)數(shù)組有4*3個(gè)元素
 locations:顏色所在位置(范圍0~1)分井,這個(gè)數(shù)組的個(gè)數(shù)不小于components中存放顏色的個(gè)數(shù)
 count:漸變個(gè)數(shù)车猬,等于locations的個(gè)數(shù)
 */
       CGFloat compoents[12]={
        248.0/255.0,86.0/255.0,86.0/255.0,1,
        249.0/255.0,127.0/255.0,127.0/255.0,1,
        1.0,1.0,1.0,1.0
    };
    CGFloat locations[3]={0,0.3,1.0};
    CGGradientRef gradient= CGGradientCreateWithColorComponents(colorSpace, compoents, locations, 3);

//    NSArray *colorArr = @[
//                          (id)[[UIColor colorWithHexString:@"56bcff"] CGColor],
//                          (id)[[UIColor colorWithHexString:@"56bcff"] CGColor]
//                          ];
//    CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)colorArr, NULL);





/*繪制線性漸變
 context:圖形上下文
 gradient:漸變色
 startPoint:起始位置
 endPoint:終止位置
 options:繪制方式,kCGGradientDrawsBeforeStartLocation 開始位置之前就進(jìn)行繪制,到結(jié)束位置之后不再繪制尺锚,
 kCGGradientDrawsAfterEndLocation開始位置之前不進(jìn)行繪制珠闰,到結(jié)束點(diǎn)之后繼續(xù)填充
 */

//    NSLog(@"point:%@",NSStringFromCGPoint([self pointFromAngle:_angle]));

//    CGContextDrawLinearGradient(context, gradient, [self pointFromAngle:-225], [self pointFromAngle:_angle], kCGGradientDrawsAfterEndLocation);

//釋放顏色空間
CGColorSpaceRelease(colorSpace);
colorSpace = NULL;

// ----------以下為重點(diǎn)----------
// 3. "反選路徑"
// CGContextReplacePathWithStrokedPath
// 將context中的路徑替換成路徑的描邊版本,使用參數(shù)context去計(jì)算路徑(即創(chuàng)建新的路徑是原來(lái)路徑的描邊)瘫辩。用恰當(dāng)?shù)念伾畛涞玫降穆窂綄a(chǎn)生類似繪制原來(lái)路徑的效果伏嗜。你可以像使用一般的路徑一樣使用它。例如伐厌,你可以通過調(diào)用CGContextClip去剪裁這個(gè)路徑的描邊
CGContextReplacePathWithStrokedPath(context);
// 剪裁路徑
CGContextClip(context);


// 用漸變色填充(嗎的承绸,竟然這句話解決了漸變色的問題,艸,艸挣轨,艸)

CGContextDrawLinearGradient(context, gradient, CGPointMake(0, rect.size.height / 2), CGPointMake(rect.size.width, rect.size.height / 2), 0);
// 釋放漸變色
CGGradientRelease(gradient);


效果如下

屏幕快照 2018-02-27 下午5.27.45.png

這樣漸變色的繪制就完成了

重點(diǎn)來(lái)了军熏,怎么實(shí)現(xiàn)可自主滑動(dòng)與點(diǎn)擊切換的效果吶?
UIControl中有以下兩個(gè)方法

//返回Yes表示要繼續(xù)跟蹤觸摸事件
- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(nullable UIEvent *)event;
//解決滑動(dòng)改變的問題
- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(nullable UIEvent *)event;


首先來(lái)解決點(diǎn)擊切換的問題(滑動(dòng)也是可以的卷扮,只是沒有連續(xù)的動(dòng)畫效果荡澎,只取滑動(dòng)最后一個(gè)點(diǎn)做繪制效果)
效果如下:

點(diǎn)擊切換無(wú)非就是獲取到你點(diǎn)擊那個(gè)點(diǎn)的point,然后根據(jù)這個(gè)point與圓心點(diǎn)坐標(biāo)計(jì)算出弧度晤锹,然后根據(jù)這個(gè)弧度重新繪制漸變效果摩幔,有了這個(gè)思路就好辦多了

#pragma mark - 解決了點(diǎn)擊圓環(huán)直接跳轉(zhuǎn)到相應(yīng)角度(對(duì)應(yīng)相應(yīng)金額)的問題
-(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    [super touchesEnded:touches withEvent:event];

    //集合轉(zhuǎn)數(shù)組,其實(shí)只有一個(gè)對(duì)象
    NSArray *arr = [touches allObjects];
    UITouch *touch = arr[0];
    CGPoint lastPoint = [touch locationInView:self];
    NSLog(@"%@",NSStringFromCGPoint(lastPoint));
    NSLog(@"%d",touches.count);

    // 非 線性范圍 則不可點(diǎn)擊
    CGFloat deltaX = lastPoint.x - self.frame.size.width/2;
    CGFloat deltaY = lastPoint.y - self.frame.size.width/2;
    //sqrt 平方根 還記得勾股定理嗎?手動(dòng)微笑
    CGFloat distanceBetweenPoints = sqrt(deltaX*deltaX + deltaY*deltaY);
    //    NSLog(@"======%f",distanceBetweenPoints);
    //設(shè)置可觸發(fā)點(diǎn)擊或者滑動(dòng)事件的范圍
    if (distanceBetweenPoints>= radius - 50 && distanceBetweenPoints <= radius+ 20) {
        [self movehandle:lastPoint];
    }
}

#pragma mark - 根據(jù)點(diǎn)擊或者滑動(dòng)獲取角度(弧度)
-(void)movehandle:(CGPoint)lastPoint{

    //獲得中心點(diǎn)
    CGPoint centerPoint = CGPointMake(self.frame.size.width/2,
                                  self.frame.size.height/2);

    //計(jì)算中心點(diǎn)到任意點(diǎn)的角度
    float currentAngle = AngleFromNorth(centerPoint,
                                    lastPoint,
                                    NO);
    //浮點(diǎn)轉(zhuǎn)整形
    int angleInt = floor(currentAngle);
    NSLog(@"%d",angleInt);

    //保存新角度
     if (angleInt >= 0 && angleInt <= self.endAngle) {
        self.angle = angleInt;
    }else if (angleInt >= 360+self.startAngle && angleInt <= 360){
        self.angle = -(360 - angleInt);
    }else if (angleInt >= self.endAngle && angleInt <= 360+self.startAngle){
        //這部分(非圓弧范圍)不做處理
    }
    
    //重新繪制
    [self setNeedsDisplay];
}

#pragma mark - 從蘋果是示例代碼clockControl中拿來(lái)的函數(shù),計(jì)算中心點(diǎn)到任意點(diǎn)的角度(弧度)
static inline float AngleFromNorth(CGPoint p1, CGPoint p2, BOOL flipped) {
    CGPoint v = CGPointMake(p2.x-p1.x,p2.y-p1.y);
    float vmag = sqrt(SQR(v.x) + SQR(v.y)), result = 0;
    v.x /= vmag;
    v.y /= vmag;
    double radians = atan2(v.y,v.x);
    result = radiansToDegrees(radians);
    return (result >=0  ? result : result + 360.0);
}


效果如下:

ggtouchgif.gif

如果想在滑動(dòng)過程中有連續(xù)的繪制效果抖甘,則必須添加下面的方法了

#pragma mark - 持續(xù)滑動(dòng)觸發(fā)事件
-(BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event{
    [super continueTrackingWithTouch:touch withEvent:event];
    //獲取觸摸點(diǎn)
    CGPoint lastPoint = [touch locationInView:self];
    NSLog(@"%@",NSStringFromCGPoint(lastPoint));

    // 非 money圖片 不可點(diǎn)擊
    CGFloat deltaX = lastPoint.x - self.frame.size.width/2;
    CGFloat deltaY = lastPoint.y - self.frame.size.width/2;
    CGFloat distanceBetweenPoints = sqrt(deltaX*deltaX + deltaY*deltaY);
    //    NSLog(@"======%f",distanceBetweenPoints);

    if (distanceBetweenPoints>= radius - 50 && distanceBetweenPoints <= radius+ 20) {
        //使用觸摸點(diǎn)來(lái)移動(dòng)小塊
        [self movehandle:lastPoint];
    }

    //發(fā)送值改變事件
    [self sendActionsForControlEvents:UIControlEventValueChanged];
    return YES;
}


效果如下:

ggcontinuegif.gif

此時(shí)感覺功能完善了热鞍,可是當(dāng)你滑動(dòng)到最底部的時(shí)候會(huì)發(fā)現(xiàn)有異常,如下所示:

ggcontinueycgif.gif

導(dǎo)致這種情況出現(xiàn)的原因是在你滑動(dòng)過程中我們調(diào)用了continueTrackingWithTouch這個(gè)方法追蹤你滑動(dòng)或點(diǎn)擊的位置衔彻,不在繪制圓環(huán)內(nèi)沒什么問題薇宠,但是當(dāng)你從繪制圓環(huán)外到繪制圓環(huán)內(nèi)的時(shí)候,捕捉到了現(xiàn)在點(diǎn)擊點(diǎn)的位置調(diào)用movehandle這個(gè)方法對(duì)視圖進(jìn)行了繪制艰额,所以這個(gè)問題怎么解決吶澄港?
很簡(jiǎn)單,首先獲取繪制的圓弧的最大Y值maxY柄沮,然后在continueTrackingWithTouch這個(gè)方法里面做判斷回梧,只要最終觸摸點(diǎn)的y值大于等于此maxY(超出了圓弧),直接return NO就好了祖搓。修改后的代碼如下

#pragma mark - 持續(xù)滑動(dòng)觸發(fā)事件
-(BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event{
    [super continueTrackingWithTouch:touch withEvent:event];
    //獲取觸摸點(diǎn)
    CGPoint lastPoint = [touch locationInView:self];

    // 超出圓弧部分直接返回NO(解決滑動(dòng)超出圓弧范圍的異常問題)
    if (lastPoint.y >= self.maxY) {
        return NO;
    }

    NSLog(@"%@",NSStringFromCGPoint(lastPoint));

    // 非 money圖片 不可點(diǎn)擊
    CGFloat deltaX = lastPoint.x - self.frame.size.width/2;
    CGFloat deltaY = lastPoint.y - self.frame.size.width/2;
    CGFloat distanceBetweenPoints = sqrt(deltaX*deltaX + deltaY*deltaY);
    //    NSLog(@"======%f",distanceBetweenPoints);

    if (distanceBetweenPoints>= radius - 50 && distanceBetweenPoints <= radius+ 20) {
        //使用觸摸點(diǎn)來(lái)移動(dòng)小塊
        [self movehandle:lastPoint];
    }

    //發(fā)送值改變事件
    [self sendActionsForControlEvents:UIControlEventValueChanged];
    return YES;
}


效果如下:

jjwtgif.gif

問題得到完美解決
關(guān)于怎么獲取最大maxY值以及錢標(biāo)圖片的定位問題狱意,在drawRect方法中直接調(diào)用

//最大Y值
self.maxY = [self pointFromAngle:self.startAngle].y;

//3.繪制拖動(dòng)小塊
CGPoint handleCenter =  [self pointFromAngle: (self.angle)];
// 圖片作進(jìn)一步處理
self.imagev.frame = CGRectMake(handleCenter.x-moneyImgWidth/2, handleCenter.y - moneyImgWidth/2, moneyImgWidth, moneyImgWidth);


現(xiàn)在我們滑動(dòng)或點(diǎn)擊繪制的功能完成了,那怎么用此功能來(lái)根據(jù)弧度計(jì)算我們要展示的數(shù)字(金額)吶拯欧?
首先看看我們VC中的代碼

- (void)viewDidLoad {
    [super viewDidLoad];

    self.circleView = [[SXCircleView alloc]initWithFrame:CGRectMake(self.view.frame.size.width/2 - 219/2, 100, 219, 219) lineWidth:10 circleAngle:240 imageName:@"qian"];

    //ControlEvents記得選擇UIControlEventValueChanged
    [self.circleView addTarget:self action:@selector(newValue:) forControlEvents:UIControlEventValueChanged];
    // 設(shè)置初始角度
    [self.circleView changeAngle:-90];
    [self.view addSubview:self.circleView];

    self.moneyLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 100+219/2-25, self.view.frame.size.width, 30)];
    self.moneyLabel.textColor = [UIColor redColor];
    self.moneyLabel.font = [UIFont systemFontOfSize:30];
    self.moneyLabel.textAlignment = NSTextAlignmentCenter;
    self.moneyLabel.text = @"6000";
    [self.view addSubview:self.moneyLabel];
}

- (void) newValue:(SXCircleView*)slider{
    NSLog(@"newValue:%d",slider.angle);
}


運(yùn)行后打印結(jié)果如下:

屏幕快照 2018-02-28 下午3.01.52.png
到一定角度時(shí)候執(zhí)行了多次详囤,猜想是

-(BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event 方法導(dǎo)致的結(jié)果

目前還沒有想到好的解決辦法(不影響功能的實(shí)現(xiàn),但總體性能上總會(huì)有些許影響),看到的童鞋如果有好的辦法希望私聊我藏姐,在此謝過!

竟然可以獲取弧度隆箩,那么根據(jù)弧度的變化更改UILabel的數(shù)字就簡(jiǎn)單了

/*
 *
 *   @param 2000                       最小金額
 *   @param 10000                      最大金額
 *   @param (slider.angle+210)         當(dāng)前弧度
 *   @param 240                        總弧度
 *
 */
- (void) newValue:(SXCircleView*)slider{

    NSLog(@"newValue:%d",slider.angle);

    CGFloat xl;
    xl = 2000/100+(slider.angle+210) * (10000/100 - 2000/100)/240;
    self.moneyLabel.text = [NSString stringWithFormat:@"%.f00",xl];
}


運(yùn)行效果如下

zzlgif2.gif

最后的最后就是關(guān)于怎么使用這個(gè)封裝類的問題了
直接將demo中的SXCircleView、UIColor+SX(顏色處理的分類)類引入到項(xiàng)目中
在你需要用的的VC中按照你們的需求修改相應(yīng)數(shù)據(jù)就好了

- (void)viewDidLoad {
    [super viewDidLoad];

    self.circleView = [[SXCircleView alloc]initWithFrame:CGRectMake(self.view.frame.size.width/2 - 219/2, 100, 219, 219) lineWidth:10 circleAngle:240 imageName:@"qian"];


    [self.circleView addTarget:self action:@selector(newValue:) forControlEvents:UIControlEventValueChanged];
    // 設(shè)置初始弧度(我設(shè)的局中羔杨,因?yàn)榭偦《?40捌臊,-210 -> 30 所以-90就是居中的弧度)
    [self.circleView changeAngle:-90];
    [self.view addSubview:self.circleView];

    self.moneyLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 100+219/2-25, self.view.frame.size.width, 30)];
    self.moneyLabel.textColor = [UIColor redColor];
    self.moneyLabel.font = [UIFont systemFontOfSize:30];
    self.moneyLabel.textAlignment = NSTextAlignmentCenter;
    //因?yàn)樵O(shè)置了弧度-90(居中) 所以label初始值也應(yīng)該是中間值(假設(shè)最小值2000,最大值10000)(2000+10000)/ 2
    self.moneyLabel.text = @"6000";
    [self.view addSubview:self.moneyLabel];
}

#pragma mark - 滑動(dòng)或點(diǎn)擊刻度表觸發(fā)事件
/*
 * @param 2000             最小值
 * @param 10000            最大值
 * @param slider.angle+210 當(dāng)前弧度
 * @param 240              總弧度
 *
 */
- (void) newValue:(SXCircleView*)slider{
    NSLog(@"newValue:%d",slider.angle);

    CGFloat xl;
    xl = 2000/100+(slider.angle+210) * (10000/100 - 2000/100)/240;
    self.moneyLabel.text = [NSString stringWithFormat:@"%.f00",xl];
}


如果在集成過程中有什么疑問歡迎私信兜材!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末理澎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子曙寡,更是在濱河造成了極大的恐慌矾端,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卵皂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡砚亭,警方通過查閱死者的電腦和手機(jī)灯变,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)捅膘,“玉大人添祸,你說我怎么就攤上這事⊙罢蹋” “怎么了刃泌?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)署尤。 經(jīng)常有香客問我耙替,道長(zhǎng),這世上最難降的妖魔是什么曹体? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任俗扇,我火速辦了婚禮,結(jié)果婚禮上箕别,老公的妹妹穿的比我還像新娘铜幽。我一直安慰自己,他們只是感情好串稀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布除抛。 她就那樣靜靜地躺著,像睡著了一般母截。 火紅的嫁衣襯著肌膚如雪到忽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天微酬,我揣著相機(jī)與錄音绘趋,去河邊找鬼颤陶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛陷遮,可吹牛的內(nèi)容都是我干的滓走。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼帽馋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼搅方!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起绽族,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤姨涡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后吧慢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涛漂,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年检诗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了匈仗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡逢慌,死狀恐怖悠轩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情攻泼,我是刑警寧澤火架,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站忙菠,受9級(jí)特大地震影響何鸡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜牛欢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一音比、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧氢惋,春花似錦洞翩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至熊赖,卻和暖如春来屠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工俱笛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留捆姜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓迎膜,卻偏偏與公主長(zhǎng)得像泥技,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子磕仅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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