UIView動(dòng)畫簡介

iOS的動(dòng)畫效果一直都很棒很,給人的感覺就是很炫酷很流暢,起到增強(qiáng)用戶體驗(yàn)的作用址儒。在APP開發(fā)中實(shí)現(xiàn)動(dòng)畫效果有很多種方式,對(duì)于簡單的應(yīng)用場景衅疙,我們可以使用UIKit提供的動(dòng)畫來實(shí)現(xiàn)莲趣。

UIView動(dòng)畫簡介

UIView動(dòng)畫實(shí)質(zhì)上是對(duì)Core Animation的封裝,提供簡潔的動(dòng)畫接口饱溢。

UIView動(dòng)畫可以設(shè)置的動(dòng)畫屬性有:

1喧伞、大小變化(frame)

2、拉伸變化(bounds)

3绩郎、中心位置(center)

4潘鲫、旋轉(zhuǎn)(transform)

5、透明度(alpha)

6肋杖、背景顏色(backgroundColor)

7溉仑、拉伸內(nèi)容(contentStretch)

UIview 類方法動(dòng)畫

1)動(dòng)畫的開始和結(jié)束方法

1.1 動(dòng)畫開始標(biāo)記

[UIViewbeginAnimations:(nullableNSString *)context:(nullablevoid *)];

第一個(gè)參數(shù):動(dòng)畫標(biāo)識(shí)

第二個(gè)參數(shù):附加參數(shù),在設(shè)置了代理的情況下兽愤,此參數(shù)將發(fā)送到setAnimationWillStartSelector和setAnimationDidStopSelector所指定的方法彼念。大部分情況下挪圾,我們?cè)O(shè)置為nil即可。

1.2 結(jié)束動(dòng)畫標(biāo)記

[UIViewcommitAnimations];

2)動(dòng)畫參數(shù)的設(shè)置方法

//動(dòng)畫持續(xù)時(shí)間[UIViewsetAnimationDuration:(NSTimeInterval)];

//動(dòng)畫的代理對(duì)象[UIViewsetAnimationDelegate:(nullableid)];

//設(shè)置動(dòng)畫將開始時(shí)代理對(duì)象執(zhí)行的SEL[UIViewsetAnimationWillStartSelector:(nullable SEL)];

//設(shè)置動(dòng)畫結(jié)束時(shí)代理對(duì)象執(zhí)行的SEL[UIViewsetAnimationDidStopSelector:(nullable SEL)];

//設(shè)置動(dòng)畫延遲執(zhí)行的時(shí)間[UIViewsetAnimationDelay:(NSTimeInterval)];

//設(shè)置動(dòng)畫的重復(fù)次數(shù)[UIViewsetAnimationRepeatCount:(float)];

//設(shè)置動(dòng)畫的曲線[UIViewsetAnimationCurve:(UIViewAnimationCurve)];UIViewAnimationCurve的枚舉值如下:UIViewAnimationCurveEaseInOut,// 慢進(jìn)慢出(默認(rèn)值)UIViewAnimationCurveEaseIn,// 慢進(jìn)UIViewAnimationCurveEaseOut,// 慢出UIViewAnimationCurveLinear// 勻速

//設(shè)置是否從當(dāng)前狀態(tài)開始播放動(dòng)畫[UIViewsetAnimationBeginsFromCurrentState:YES];? ? 假設(shè)上一個(gè)動(dòng)畫正在播放逐沙,且尚未播放完畢哲思,我們將要進(jìn)行一個(gè)新的動(dòng)畫:? ? 當(dāng)為YES時(shí):動(dòng)畫將從上一個(gè)動(dòng)畫所在的狀態(tài)開始播放? ? 當(dāng)為NO時(shí):動(dòng)畫將從上一個(gè)動(dòng)畫所指定的最終狀態(tài)開始播放(此時(shí)上一個(gè)動(dòng)畫馬上結(jié)束)

//設(shè)置動(dòng)畫是否繼續(xù)執(zhí)行相反的動(dòng)畫[UIViewsetAnimationRepeatAutoreverses:(BOOL)];

//是否禁用動(dòng)畫效果(對(duì)象屬性依然會(huì)被改變,只是沒有動(dòng)畫效果)[UIViewsetAnimationsEnabled:(BOOL)];

//設(shè)置視圖的過渡效果[UIViewsetAnimationTransition:(UIViewAnimationTransition) forView:(nonnullUIView*) cache:(BOOL)];? ? 第一個(gè)參數(shù):UIViewAnimationTransition的枚舉值如下UIViewAnimationTransitionNone,//不使用動(dòng)畫UIViewAnimationTransitionFlipFromLeft,//從左向右旋轉(zhuǎn)翻頁UIViewAnimationTransitionFlipFromRight,//從右向左旋轉(zhuǎn)翻頁UIViewAnimationTransitionCurlUp,//從下往上卷曲翻頁UIViewAnimationTransitionCurlDown,//從上往下卷曲翻頁第二個(gè)參數(shù):需要過渡效果的View? ? 第三個(gè)參數(shù):是否使用視圖緩存吩案,YES:視圖在開始和結(jié)束時(shí)渲染一次棚赔;NO:視圖在每一幀都渲染

3)實(shí)例代碼:

1、屬性變化動(dòng)畫(以frame變化為例)

- (void)changeFrame {? ? [UIViewbeginAnimations:@"FrameAni"context:nil];? ? [UIViewsetAnimationDuration:1.0];? ? [UIViewsetAnimationDelegate:self];? ? [UIViewsetAnimationWillStartSelector:@selector(startAni:)];? ? [UIViewsetAnimationDidStopSelector:@selector(stopAni:)];? ? [UIViewsetAnimationRepeatCount:1];? ? [UIViewsetAnimationCurve:UIViewAnimationCurveEaseInOut];self.cartCenter.frame=self.centerShow.frame;? ? [UIViewcommitAnimations];}- (void)startAni:(NSString*)aniID {NSLog(@"%@ start",aniID);}- (void)stopAni:(NSString*)aniID {NSLog(@"%@ stop",aniID);}

動(dòng)畫效果:

NormalAni.gif

2徘郭、轉(zhuǎn)場效果動(dòng)畫(以Flip效果為例)

- (void)flipAni {? ? [UIViewbeginAnimations:@"FlipAni"context:nil];? ? [UIViewsetAnimationDuration:1.0];? ? [UIViewsetAnimationDelegate:self];? ? [UIViewsetAnimationWillStartSelector:@selector(startAni:)];? ? [UIViewsetAnimationDidStopSelector:@selector(stopAni:)];? ? [UIViewsetAnimationRepeatCount:1];? ? [UIViewsetAnimationCurve:UIViewAnimationCurveEaseInOut];? ? [UIViewsetAnimationTransition:UIViewAnimationTransitionFlipFromLeftforView:self.centerShowcache:YES];self.centerShow.image= [UIImageimageNamed:@"service"];? ? [UIViewcommitAnimations];}

動(dòng)畫效果:

ScreenTransitionAni.gif

UIview Block動(dòng)畫

iOS4.0以后靠益,增加了Block動(dòng)畫塊,提供更簡潔的方式來實(shí)現(xiàn)動(dòng)畫残揉。

1)Block動(dòng)畫方法

1胧后、最簡潔的Block動(dòng)畫:包含時(shí)間和動(dòng)畫

[UIViewanimateWithDuration:(NSTimeInterval)//動(dòng)畫持續(xù)時(shí)間animations:^{//執(zhí)行的動(dòng)畫}];

2、帶有動(dòng)畫完成回調(diào)的Block動(dòng)畫

[UIViewanimateWithDuration:(NSTimeInterval)//動(dòng)畫持續(xù)時(shí)間animations:^{//執(zhí)行的動(dòng)畫}? ? ? ? ? ? ? ? completion:^(BOOLfinished) {//動(dòng)畫執(zhí)行完畢后的操作}];

3抱环、可設(shè)置延遲時(shí)間和過渡效果的Block動(dòng)畫

[UIViewanimateWithDuration:(NSTimeInterval)//動(dòng)畫持續(xù)時(shí)間delay:(NSTimeInterval)//動(dòng)畫延遲執(zhí)行的時(shí)間options:(UIViewAnimationOptions)//動(dòng)畫的過渡效果animations:^{//執(zhí)行的動(dòng)畫}? ? ? ? ? ? ? ? completion:^(BOOLfinished) {//動(dòng)畫執(zhí)行完畢后的操作}];

UIViewAnimationOptions的枚舉值如下壳快,可組合使用:

UIViewAnimationOptionLayoutSubviews//進(jìn)行動(dòng)畫時(shí)布局子控件UIViewAnimationOptionAllowUserInteraction//進(jìn)行動(dòng)畫時(shí)允許用戶交互UIViewAnimationOptionBeginFromCurrentState//從當(dāng)前狀態(tài)開始動(dòng)畫UIViewAnimationOptionRepeat//無限重復(fù)執(zhí)行動(dòng)畫UIViewAnimationOptionAutoreverse//執(zhí)行動(dòng)畫回路UIViewAnimationOptionOverrideInheritedDuration//忽略嵌套動(dòng)畫的執(zhí)行時(shí)間設(shè)置UIViewAnimationOptionOverrideInheritedCurve//忽略嵌套動(dòng)畫的曲線設(shè)置UIViewAnimationOptionAllowAnimatedContent//轉(zhuǎn)場:進(jìn)行動(dòng)畫時(shí)重繪視圖UIViewAnimationOptionShowHideTransitionViews//轉(zhuǎn)場:移除(添加和移除圖層的)動(dòng)畫效果UIViewAnimationOptionOverrideInheritedOptions//不繼承父動(dòng)畫設(shè)置UIViewAnimationOptionCurveEaseInOut//時(shí)間曲線,慢進(jìn)慢出(默認(rèn)值)UIViewAnimationOptionCurveEaseIn//時(shí)間曲線镇草,慢進(jìn)UIViewAnimationOptionCurveEaseOut//時(shí)間曲線眶痰,慢出UIViewAnimationOptionCurveLinear//時(shí)間曲線,勻速UIViewAnimationOptionTransitionNone//轉(zhuǎn)場梯啤,不使用動(dòng)畫UIViewAnimationOptionTransitionFlipFromLeft//轉(zhuǎn)場竖伯,從左向右旋轉(zhuǎn)翻頁UIViewAnimationOptionTransitionFlipFromRight//轉(zhuǎn)場,從右向左旋轉(zhuǎn)翻頁UIViewAnimationOptionTransitionCurlUp//轉(zhuǎn)場因宇,下往上卷曲翻頁UIViewAnimationOptionTransitionCurlDown//轉(zhuǎn)場七婴,從上往下卷曲翻頁UIViewAnimationOptionTransitionCrossDissolve//轉(zhuǎn)場,交叉消失和出現(xiàn)UIViewAnimationOptionTransitionFlipFromTop//轉(zhuǎn)場羽嫡,從上向下旋轉(zhuǎn)翻頁UIViewAnimationOptionTransitionFlipFromBottom//轉(zhuǎn)場本姥,從下向上旋轉(zhuǎn)翻頁

4、spring動(dòng)畫

iOS7.0后新增Spring動(dòng)畫(ios系統(tǒng)動(dòng)畫大部分采用Spring Animation杭棵,適用于所有可被添加動(dòng)畫效果的屬性)

[UIViewanimateWithDuration:(NSTimeInterval)//動(dòng)畫持續(xù)時(shí)間delay:(NSTimeInterval)//動(dòng)畫延遲執(zhí)行的時(shí)間usingSpringWithDamping:(CGFloat)//震動(dòng)效果婚惫,范圍0~1,數(shù)值越小震動(dòng)效果越明顯initialSpringVelocity:(CGFloat)//初始速度魂爪,數(shù)值越大初始速度越快options:(UIViewAnimationOptions)//動(dòng)畫的過渡效果animations:^{//執(zhí)行的動(dòng)畫}? ? ? ? ? ? ? ? ? completion:^(BOOLfinished) {//動(dòng)畫執(zhí)行完畢后的操作}];

5先舷、Keyframes動(dòng)畫

iOS7.0后新增關(guān)鍵幀動(dòng)畫,支持屬性關(guān)鍵幀滓侍,不支持路徑關(guān)鍵幀

[UIViewanimateKeyframesWithDuration:(NSTimeInterval)//動(dòng)畫持續(xù)時(shí)間delay:(NSTimeInterval)//動(dòng)畫延遲執(zhí)行的時(shí)間options:(UIViewKeyframeAnimationOptions)//動(dòng)畫的過渡效果animations:^{//執(zhí)行的關(guān)鍵幀動(dòng)畫}? ? ? ? ? ? ? ? ? ? ? ? ? completion:^(BOOLfinished) {//動(dòng)畫執(zhí)行完畢后的操作}];

UIViewKeyframeAnimationOptions的枚舉值如下蒋川,可組合使用:

UIViewAnimationOptionLayoutSubviews//進(jìn)行動(dòng)畫時(shí)布局子控件UIViewAnimationOptionAllowUserInteraction//進(jìn)行動(dòng)畫時(shí)允許用戶交互UIViewAnimationOptionBeginFromCurrentState//從當(dāng)前狀態(tài)開始動(dòng)畫UIViewAnimationOptionRepeat//無限重復(fù)執(zhí)行動(dòng)畫UIViewAnimationOptionAutoreverse//執(zhí)行動(dòng)畫回路UIViewAnimationOptionOverrideInheritedDuration//忽略嵌套動(dòng)畫的執(zhí)行時(shí)間設(shè)置UIViewAnimationOptionOverrideInheritedOptions//不繼承父動(dòng)畫設(shè)置UIViewKeyframeAnimationOptionCalculationModeLinear//運(yùn)算模式 :連續(xù)UIViewKeyframeAnimationOptionCalculationModeDiscrete//運(yùn)算模式 :離散UIViewKeyframeAnimationOptionCalculationModePaced//運(yùn)算模式 :均勻執(zhí)行UIViewKeyframeAnimationOptionCalculationModeCubic//運(yùn)算模式 :平滑UIViewKeyframeAnimationOptionCalculationModeCubicPaced//運(yùn)算模式 :平滑均勻

各種運(yùn)算模式的直觀比較如下圖:

圖片來源網(wǎng)絡(luò).png

增加關(guān)鍵幀的方法:

[UIViewaddKeyframeWithRelativeStartTime:(double)//動(dòng)畫開始的時(shí)間(占總時(shí)間的比例)relativeDuration:(double)//動(dòng)畫持續(xù)時(shí)間(占總時(shí)間的比例)animations:^{//執(zhí)行的動(dòng)畫}];

6、轉(zhuǎn)場動(dòng)畫

6.1 從舊視圖轉(zhuǎn)到新視圖的動(dòng)畫效果

[UIViewtransitionFromView:(nonnullUIView *)toView:(nonnullUIView *)duration:(NSTimeInterval)options:(UIViewAnimationOptions)completion:^(BOOLfinished){? ? ? ? ? ? ? ? ? ? //動(dòng)畫執(zhí)行完畢后的操作 }];

在該動(dòng)畫過程中撩笆,fromView 會(huì)從父視圖中移除捺球,并講 toView 添加到父視圖中缸浦,注意轉(zhuǎn)場動(dòng)畫的作用對(duì)象是父視圖(過渡效果體現(xiàn)在父視圖上)。

調(diào)用該方法相當(dāng)于執(zhí)行下面兩句代碼:

[fromView.superviewaddSubview:toView];[fromViewremoveFromSuperview];

6.2 單個(gè)視圖的過渡效果

[UIViewtransitionWithView:(nonnullUIView *)duration:(NSTimeInterval)options:(UIViewAnimationOptions)animations:^{? ? ? ? ? ? ? ? //執(zhí)行的動(dòng)畫 }? ? ? ? ? ? ? ? completion:^(BOOLfinished){? ? ? ? ? ? ? ? //動(dòng)畫執(zhí)行完畢后的操作 }];

2)實(shí)例代碼:

1氮兵、普通動(dòng)畫

下面三段代碼都實(shí)現(xiàn)了相同的視圖frame的變化裂逐,不同之處只在于其延遲時(shí)間、過渡效果和結(jié)束回調(diào)泣栈。

- (void)blockAni1 {? ? [UIViewanimateWithDuration:1.0animations:^{self.cartCenter.frame=self.centerShow.frame;? ? }];}

- (void)blockAni2 {? ? [UIViewanimateWithDuration:1.0animations:^{self.cartCenter.frame=self.centerShow.frame;? ? } completion:^(BOOLfinished) {NSLog(@"動(dòng)畫結(jié)束");? ? }];}

- (void)blockAni3 {? ? [UIViewanimateWithDuration:1.0delay:1.0options:UIViewAnimationOptionCurveEaseInOutanimations:^{self.cartCenter.frame=self.centerShow.frame;? ? } completion:^(BOOLfinished) {NSLog(@"動(dòng)畫結(jié)束");? ? }];}

動(dòng)畫效果:

NormalAni.gif

2卜高、Spring動(dòng)畫

- (void)blockAni4 {? ? [UIViewanimateWithDuration:1.0delay:0.f usingSpringWithDamping:0.5initialSpringVelocity:5.0options:UIViewAnimationOptionCurveLinearanimations:^{self.cartCenter.frame=self.centerShow.frame;? ? } completion:^(BOOLfinished) {NSLog(@"動(dòng)畫結(jié)束");? ? }];}

動(dòng)畫效果:

SpringAni.gif

3、Keyframes動(dòng)畫

這里以實(shí)現(xiàn)視圖背景顏色變化(紅-綠-藍(lán)-紫)的過程來演示關(guān)鍵幀動(dòng)畫南片。

- (void)blockAni5 {? ? self.centerShow.image = nil;? ? [UIView animateKeyframesWithDuration:9.0delay:0.foptions:UIViewKeyframeAnimationOptionCalculationModeLinear animations:^{? ? ? ? [UIView addKeyframeWithRelativeStartTime:0.frelativeDuration:1.0/4animations:^{? ? ? ? ? ? self.centerShow.backgroundColor = [UIColor colorWithRed:0.9475green:0.1921blue:0.1746alpha:1.0];? ? ? ? }];? ? ? ? [UIView addKeyframeWithRelativeStartTime:1.0/4relativeDuration:1.0/4animations:^{? ? ? ? ? ? self.centerShow.backgroundColor = [UIColor colorWithRed:0.1064green:0.6052blue:0.0334alpha:1.0];? ? ? ? }];? ? ? ? [UIView addKeyframeWithRelativeStartTime:2.0/4relativeDuration:1.0/4animations:^{? ? ? ? ? ? self.centerShow.backgroundColor = [UIColor colorWithRed:0.1366green:0.3017blue:0.8411alpha:1.0];? ? ? ? }];? ? ? ? [UIView addKeyframeWithRelativeStartTime:3.0/4relativeDuration:1.0/4animations:^{? ? ? ? ? ? self.centerShow.backgroundColor = [UIColor colorWithRed:0.619green:0.037blue:0.6719alpha:1.0];? ? ? ? }];? ? } completion:^(BOOL finished) {? ? ? ? NSLog(@"動(dòng)畫結(jié)束");? ? }];}

動(dòng)畫效果:

KeyFramesAni.gif

4掺涛、轉(zhuǎn)場動(dòng)畫

4.1 單個(gè)視圖的過渡效果

- (void)blockAni6 {? ? [UIViewtransitionWithView:self.centerShowduration:1.0options:UIViewAnimationOptionTransitionCrossDissolveanimations:^{self.centerShow.image= [UIImageimageNamed:@"Service"];? ? } completion:^(BOOLfinished) {NSLog(@"動(dòng)畫結(jié)束");? ? }];}

動(dòng)畫效果:

TransitionAni.gif

4.2 從舊視圖轉(zhuǎn)到新視圖的動(dòng)畫效果

- (void)blockAni7 {UIImageView* newCenterShow = [[UIImageViewalloc]initWithFrame:self.centerShow.frame];? ? newCenterShow.image= [UIImageimageNamed:@"Service"];? ? [UIViewtransitionFromView:self.centerShowtoView:newCenterShow duration:1.0options:UIViewAnimationOptionTransitionFlipFromLeftcompletion:^(BOOLfinished) {NSLog(@"動(dòng)畫結(jié)束");? ? }];}

動(dòng)畫效果:

ScreenTransitionAni.gif

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市疼进,隨后出現(xiàn)的幾起案子薪缆,更是在濱河造成了極大的恐慌,老刑警劉巖伞广,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矮燎,死亡現(xiàn)場離奇詭異,居然都是意外死亡赔癌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門澜沟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灾票,“玉大人,你說我怎么就攤上這事茫虽】裕” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵濒析,是天一觀的道長正什。 經(jīng)常有香客問我,道長号杏,這世上最難降的妖魔是什么婴氮? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮盾致,結(jié)果婚禮上主经,老公的妹妹穿的比我還像新娘。我一直安慰自己庭惜,他們只是感情好罩驻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著护赊,像睡著了一般惠遏。 火紅的嫁衣襯著肌膚如雪砾跃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天节吮,我揣著相機(jī)與錄音抽高,去河邊找鬼。 笑死课锌,一個(gè)胖子當(dāng)著我的面吹牛厨内,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播渺贤,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼雏胃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了志鞍?” 一聲冷哼從身側(cè)響起瞭亮,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎固棚,沒想到半個(gè)月后统翩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡此洲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年厂汗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呜师。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡娶桦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出汁汗,到底是詐尸還是另有隱情衷畦,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布知牌,位于F島的核電站祈争,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏角寸。R本人自食惡果不足惜菩混,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扁藕。 院中可真熱鬧墨吓,春花似錦、人聲如沸纹磺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽橄杨。三九已至秘症,卻和暖如春照卦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背乡摹。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國打工役耕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人聪廉。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓瞬痘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親板熊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子框全,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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