動(dòng)畫(huà)分享

動(dòng)畫(huà)分享

Core Animation結(jié)構(gòu)

繼承關(guān)系

626233-43bafe84d8aee5bf.png

其中灰色虛線表示繼承關(guān)系凿跳,紅色表示遵守協(xié)議秒裕。

核心動(dòng)畫(huà)中所有類(lèi)都遵守CAMediaTiming協(xié)議。
CAAnaimation是個(gè)抽象類(lèi)凉袱,不具備動(dòng)畫(huà)效果逗柴,必須用它的子類(lèi)才有動(dòng)畫(huà)效果。

CAAnimationGroup是個(gè)動(dòng)畫(huà)組院塞,可以同時(shí)進(jìn)行縮放遮晚,旋轉(zhuǎn)(同時(shí)進(jìn)行多個(gè)動(dòng)畫(huà))。

CATransition是轉(zhuǎn)場(chǎng)動(dòng)畫(huà)拦止,界面之間跳轉(zhuǎn)(切換)都可以用轉(zhuǎn)場(chǎng)動(dòng)畫(huà)县遣。

CAPropertyAnimation也是個(gè)抽象類(lèi),本身不具備動(dòng)畫(huà)效果汹族,只有子類(lèi)才有萧求。

CABasicAnimation和CAKeyframeAnimation:
CABasicAnimation基本動(dòng)畫(huà),做一些簡(jiǎn)單效果顶瞒。
CAKeyframeAnimation幀動(dòng)畫(huà)夸政,做一些連續(xù)的流暢的動(dòng)畫(huà)。

CAMediaTiming協(xié)議

屬性 說(shuō)明
beginTime 開(kāi)始時(shí)間,可以用來(lái)設(shè)置動(dòng)畫(huà)延遲執(zhí)行時(shí)間榴徐,若想延遲2s秒梳,就設(shè)置為CACurrentMediaTime()+2,
CACurrentMediaTime()為圖層的當(dāng)前時(shí)間
duration 動(dòng)畫(huà)的持續(xù)時(shí)間,默認(rèn)為0
speed 播放速度箕速,默認(rèn)的值為 1.0.如果你改變這個(gè)值為 2.0,動(dòng)畫(huà)會(huì)用 2 倍的速度播放酪碘。這樣的影響就是使持續(xù)時(shí)間減半。
如果你指定的持續(xù)時(shí)間為 6 秒,速度為 2.0,動(dòng)畫(huà)就會(huì)播放 3 秒鐘即一半的持續(xù)時(shí)間盐茎。
Autoreverses 設(shè)定這個(gè)屬性為 YES 時(shí),在它到達(dá)目的地之后,
動(dòng)畫(huà)的返回到開(kāi)始的值,代替了直接跳轉(zhuǎn)到開(kāi)始的值兴垦,過(guò)渡平滑
repeatCount 重復(fù)次數(shù),無(wú)限循環(huán)可以設(shè)置HUGE_VALF或者M(jìn)AXFLOAT
repeatDuration 重復(fù)時(shí)間
fillMode 決定動(dòng)畫(huà)執(zhí)行完后 對(duì)象的狀態(tài)

參考文章控制動(dòng)畫(huà)時(shí)間
Controlling Animation Timing

CAAnimation——簡(jiǎn)介

是所有動(dòng)畫(huà)對(duì)象的父類(lèi)字柠,負(fù)責(zé)控制動(dòng)畫(huà)的持續(xù)時(shí)間和速度探越,是個(gè)抽象類(lèi),不能直接使用窑业,應(yīng)該使用它具體的子類(lèi)钦幔。

屬性 說(shuō)明
removedOnCompletion 默認(rèn)為YES,代表動(dòng)畫(huà)執(zhí)行完畢后就從圖層上移除常柄,
圖形會(huì)恢復(fù)到動(dòng)畫(huà)執(zhí)行前的狀態(tài)鲤氢。
如果想讓圖層保持顯示動(dòng)畫(huà)執(zhí)行后的狀態(tài),
那就設(shè)置為NO西潘,不過(guò)還要設(shè)置fillMode為kCAFillModeForwards
timingFunction 速度控制函數(shù)卷玉,控制動(dòng)畫(huà)運(yùn)行的節(jié)奏
delegate 代理,包含了動(dòng)畫(huà)開(kāi)始和結(jié)束的回調(diào)方法

fillMode屬性的設(shè)置:

  • kCAFillModeRemoved 這個(gè)是默認(rèn)值,也就是說(shuō)當(dāng)動(dòng)畫(huà)開(kāi)始前和動(dòng)畫(huà)結(jié)束后喷市,動(dòng)畫(huà)對(duì)layer都沒(méi)有影響相种,動(dòng)畫(huà)結(jié)束后,layer會(huì)恢復(fù)到之前的狀態(tài)

  • kCAFillModeForwards 當(dāng)動(dòng)畫(huà)結(jié)束后品姓,layer會(huì)一直保持著動(dòng)畫(huà)最后的狀態(tài)

  • kCAFillModeBackwards 在動(dòng)畫(huà)開(kāi)始前寝并,只需要將動(dòng)畫(huà)加入了一個(gè)layer箫措,layer便立即進(jìn)入動(dòng)畫(huà)的初始狀態(tài)并等待動(dòng)畫(huà)開(kāi)始。

  • kCAFillModeBoth 這個(gè)其實(shí)就是上面兩個(gè)的合成.動(dòng)畫(huà)加入后開(kāi)始之前衬潦,layer便處于動(dòng)畫(huà)初始狀態(tài)蒂破,動(dòng)畫(huà)結(jié)束后layer保持動(dòng)畫(huà)最后的狀態(tài)

速度控制函數(shù)(CAMediaTimingFunction):

  • kCAMediaTimingFunctionLinear(線性):勻速,給你一個(gè)相對(duì)靜態(tài)的感覺(jué)

  • kCAMediaTimingFunctionEaseIn(漸進(jìn)):動(dòng)畫(huà)緩慢進(jìn)入别渔,然后加速離開(kāi)

  • kCAMediaTimingFunctionEaseOut(漸出):動(dòng)畫(huà)全速進(jìn)入附迷,然后減速的到達(dá)目的地

  • kCAMediaTimingFunctionEaseInEaseOut(漸進(jìn)漸出):動(dòng)畫(huà)緩慢的進(jìn)入,中間加速哎媚,然后減速的到達(dá)目的地喇伯。這個(gè)是默認(rèn)的動(dòng)畫(huà)行為。

CAPropertyAnimation

是CAAnimation的子類(lèi)拨与,也是個(gè)抽象類(lèi)稻据,要想創(chuàng)建動(dòng)畫(huà)對(duì)象,應(yīng)該使用它的兩個(gè)子類(lèi):CABasicAnimation和CAKeyframeAnimation买喧。

屬性 說(shuō)明
keyPath 指定了動(dòng)畫(huà)的關(guān)鍵路徑

CATransition——轉(zhuǎn)場(chǎng)動(dòng)畫(huà)

CATransition是CAAnimation的子類(lèi)捻悯,用于做轉(zhuǎn)場(chǎng)動(dòng)畫(huà),能夠?yàn)閷犹峁┮瞥銎聊缓鸵迫肫聊坏膭?dòng)畫(huà)效果淤毛。

UINavigationController就是通過(guò)CATransition實(shí)現(xiàn)了將控制器的視圖推入屏幕的動(dòng)畫(huà)效果今缚。我們可以通過(guò)CATransition來(lái)自定義轉(zhuǎn)場(chǎng)動(dòng)畫(huà)。

屬性 說(shuō)明
type 動(dòng)畫(huà)過(guò)渡類(lèi)型
subtype 動(dòng)畫(huà)過(guò)度方向
startProgress 動(dòng)畫(huà)起點(diǎn)(在整體動(dòng)畫(huà)的百分比)
endProgress 動(dòng)畫(huà)終點(diǎn)(在整體動(dòng)畫(huà)的百分比)
addAnimation: forKey: 把轉(zhuǎn)場(chǎng)動(dòng)畫(huà)添加到layer上

|類(lèi)型字符串 | 效果說(shuō)明 | 對(duì)應(yīng)常量
|---|---|---|---|
|fade | 交叉淡化過(guò)渡 | kCATransitionFade
|push | 新視圖把舊視圖推出去 |kCATransitionPush
|moveIn| 新視圖移到舊視圖上面| kCATransitionReveal
|reveal |將舊視圖移開(kāi),顯示下面的新視圖| kCATransitionMoveIn
|cube |立方體翻滾效果 | 私有
|oglFlip |上下左右翻滾效果 | 私有
|suckEffect |收縮效果,如一塊布被抽走 | 私有
|rippleEffect |水滴效果 | 私有
|pageCurl |向上翻頁(yè)效果 | 私有
|pageUnCurl |向下翻頁(yè)效果 | 私有
|cameraIrisHollowOpen |相機(jī)鏡頭打開(kāi)效果| 私有
|cameraIrisHollowClose |相機(jī)鏡頭關(guān)閉效果| 私有

CABasicAnimation——基本動(dòng)畫(huà)

屬性說(shuō)明:

屬性 說(shuō)明
fromValue keyPath對(duì)應(yīng)的屬性的初始值
toValue keyPath對(duì)應(yīng)的屬性的結(jié)束值

動(dòng)畫(huà)過(guò)程說(shuō)明:

隨著動(dòng)畫(huà)的進(jìn)行低淡,在長(zhǎng)度為duration的持續(xù)時(shí)間內(nèi)姓言,keyPath相應(yīng)屬性的值從fromValue漸漸地變?yōu)閠oValue。

keyPath內(nèi)容是CALayer的可以用來(lái)制作動(dòng)畫(huà)(Animatable)的屬性蔗蹋。動(dòng)畫(huà)的產(chǎn)生是由于CABasicAnimation的這些valuse作用到了keyPath何荚,也就是CALayer中的Animatable類(lèi)型的屬性上,如transform猪杭,position等餐塘。

如果fillMode = kCAFillModeForwards同時(shí)removedOnComletion = NO,那么在動(dòng)畫(huà)執(zhí)行完畢后皂吮,圖層會(huì)保持顯示動(dòng)畫(huà)執(zhí)行后的狀態(tài)戒傻。但在實(shí)質(zhì)上,圖層的屬性值還是動(dòng)畫(huà)執(zhí)行前的初始值涮较,并沒(méi)有真正被改變稠鼻。

CAKeyframeAnimation——關(guān)鍵幀動(dòng)畫(huà)

關(guān)鍵幀動(dòng)畫(huà),也是CAPropertyAnimation的子類(lèi)狂票,與CABasicAnimation的區(qū)別是:

  • CABasicAnimation只能從一個(gè)數(shù)值(fromValue)變到另一個(gè)數(shù)值(toValue),而CAKeyframeAnimation會(huì)使用一個(gè)NSArray保存這些數(shù)值
  • CABasicAnimation可看做是只有2個(gè)關(guān)鍵幀的CAKeyframeAnimation
屬性 說(shuō)明
values NSArray對(duì)象熙暴。里面的元素稱(chēng)為“關(guān)鍵幀”(keyframe)闺属。
動(dòng)畫(huà)對(duì)象會(huì)在指定的時(shí)間(duration)內(nèi)慌盯,依次顯示values數(shù)組中的每一個(gè)關(guān)鍵幀
path 可以設(shè)置一個(gè)CGPathRef、CGMutablePathRef掂器,讓圖層按照路徑軌跡移動(dòng)亚皂。
path只對(duì)CALayer的anchorPoint和position起作用。如果設(shè)置了path国瓮,那么values將被忽略
keyTimes 可以為對(duì)應(yīng)的關(guān)鍵幀指定對(duì)應(yīng)的時(shí)間點(diǎn)灭必,其取值范圍為0到1.0,
keyTimes中的每一個(gè)時(shí)間值都對(duì)應(yīng)values中的每一幀乃摹。
如果沒(méi)有設(shè)置keyTimes禁漓,各個(gè)關(guān)鍵幀的時(shí)間是平分的

CAAnimationGroup——?jiǎng)赢?huà)組

動(dòng)畫(huà)組,是CAAnimation的子類(lèi)孵睬,可以保存一組動(dòng)畫(huà)對(duì)象播歼,將CAAnimationGroup對(duì)象加入層后,組中所有動(dòng)畫(huà)對(duì)象可以同時(shí)并發(fā)運(yùn)行掰读。

默認(rèn)情況下秘狞,一組動(dòng)畫(huà)對(duì)象是同時(shí)運(yùn)行的,也可以通過(guò)設(shè)置動(dòng)畫(huà)對(duì)象的beginTime屬性來(lái)更改動(dòng)畫(huà)的開(kāi)始時(shí)間蹈集。

屬性 說(shuō)明
animations 用來(lái)保存一組動(dòng)畫(huà)對(duì)象的NSArray

CASpringAnimation 彈性動(dòng)畫(huà)

屬性 說(shuō)明
mass 質(zhì)量烁试,影響圖層運(yùn)動(dòng)時(shí)的彈簧慣性,質(zhì)量越大拢肆,
彈簧拉伸和壓縮的幅度越大
stiffnes 剛度系數(shù)(勁度系數(shù)/彈性系數(shù))廓潜,剛度系數(shù)越大,
形變產(chǎn)生的力就越大善榛,運(yùn)動(dòng)越快
damping 阻尼系數(shù)辩蛋,阻止彈簧伸縮的系數(shù),阻尼系數(shù)越大移盆,停止越快
initivelocity 初始速率悼院,動(dòng)畫(huà)視圖的初始速度大小;速率為正數(shù)時(shí),
速度方向與運(yùn)動(dòng)方向一致咒循,速率為負(fù)數(shù)時(shí)据途,速度方向與運(yùn)動(dòng)方向相反
settingDuration 結(jié)算時(shí)間(根據(jù)動(dòng)畫(huà)相關(guān)參數(shù)估算彈簧開(kāi)始運(yùn)動(dòng)到停止的時(shí)間,
動(dòng)畫(huà)設(shè)置的時(shí)間最好根據(jù)此時(shí)間來(lái)設(shè)置)

CASpringAnimation是ios9及以上版本才可以使用叙甸,想要適配ios9以前版本的話 需要自己動(dòng)手來(lái)完成彈性動(dòng)畫(huà)

阻尼震蕩

496px-Damped_oscillation_graph.svg.png
D103F63B-50DE-4ED6-97AA-10FD39E4B5DB.png
14981914785849.png

參考資料粘性動(dòng)畫(huà)

查看數(shù)學(xué)函數(shù)對(duì)應(yīng)的圖像的網(wǎng)站

CAKeyframeAnimation 關(guān)鍵幀動(dòng)畫(huà)

屬性 說(shuō)明
values 指定關(guān)鍵點(diǎn)的值
path 可以設(shè)置一個(gè)CGPathRef / CGMutablePathRef颖医,讓層跟著路徑移動(dòng)。
path只對(duì)CALayer的anchorPoint和position起作用裆蒸。如果你設(shè)置了path熔萧,
那么values將被忽略.
keyTimes 是走到某一個(gè)關(guān)鍵點(diǎn)花費(fèi)的時(shí)間百分比(0~1),keyTimes中的每一個(gè)
時(shí)間值都對(duì)應(yīng)values中的每一幀(兩個(gè)數(shù)組的個(gè)數(shù)必須一致),
當(dāng)keyTimes沒(méi)有設(shè)置的時(shí)候,各個(gè)關(guān)鍵幀的時(shí)間是平分的佛致。
通過(guò) 設(shè)置不同的屬性值values 動(dòng)畫(huà) 關(guān)鍵幀動(dòng)畫(huà)創(chuàng)建第一種方式
通過(guò) 繪制路徑path 動(dòng)畫(huà) 關(guān)鍵幀動(dòng)畫(huà)創(chuàng)建第二種方式

AnimationWithKeyPath的值

屬性后面的描述中帶有Animatable的都可以作為keyPath
如CAlayer的transform贮缕,position等等

水波動(dòng)畫(huà)

正弦型函數(shù)解析式:y=Asin(ωx+φ)+h
各常數(shù)值對(duì)函數(shù)圖像的影響:
φ(初相位):決定波形與X軸位置關(guān)系或橫向移動(dòng)距離(左加右減)
ω:決定周期(最小正周期T=2π/|ω|)
A:決定峰值(即縱向拉伸壓縮的倍數(shù))
h:表示波形在Y軸的位置關(guān)系或縱向移動(dòng)距離(上加下減)

CATransFrom3D

iOS設(shè)備上,是按照左手系的三維空間俺榆,即正面面對(duì)設(shè)備屏幕感昼,坐標(biāo)原點(diǎn)從屏幕左上方起,x軸指向右方罐脊,y軸指向下方定嗓,z軸為屏幕指向眼球。而macOS上是右手系萍桌,原點(diǎn)是屏幕左下角宵溅,x軸指向右方,y軸指向上方(相反)梗夸,z軸同樣為屏幕指向眼球层玲,要注意

5c010c6b630ab7aa0892428016d7e.jpeg

3D效果中平移、旋轉(zhuǎn)反症、縮放辛块、都是通過(guò)矩陣的變換得到的

CATransform3D結(jié)構(gòu)體
struct CATransform3D
{
  CGFloat m11, m12, m13, m14;
  CGFloat m21, m22, m23, m24;
  CGFloat m31, m32, m33, m34;
  CGFloat m41, m42, m43, m44;
};

這個(gè)結(jié)構(gòu)體對(duì)應(yīng)這樣一個(gè)4x4的矩陣

C8B0A3D9-796D-40BF-A5A8-7AB02E249230.png
4196_131230104304_1.png

這里的矩陣變換主要是兩個(gè)矩陣相乘,將坐標(biāo)向量乘以變換的矩陣铅碍,得到變換后的坐標(biāo)润绵。

4196_131230104316_1.png

1.平移

2766C09E-7B01-48C2-B42B-77A1E56B29FB.png
對(duì)應(yīng)API:
CATransform3D CATransform3DMakeTranslation(CGFloat tx, CGFloat ty, CGFloat tz);

2.縮放

BDCEC978-9B92-4149-8530-148A80C22C6B.png
對(duì)應(yīng)API:
CATransform3D CATransform3DMakeScale(CGFloat sx, CGFloat sy, CGFloat sz);

3.旋轉(zhuǎn)

59C76777-3EEB-4887-9C0E-18E6B3163D4E.png

4.為什么設(shè)置m34
當(dāng)我們要實(shí)現(xiàn)近大遠(yuǎn)小的效果的時(shí)候,為什么只需要設(shè)置m34的值就可以了胞谈?

透視投影

眼睛從實(shí)際平行的兩條線段發(fā)出(相當(dāng)于z軸方向的向量)尘盼,人眼看起來(lái)會(huì)相交于一點(diǎn)上(焦點(diǎn),F(xiàn)ocal point)烦绳,這才產(chǎn)生了3D感
a7ed0efe4aebcddaef0d090c631b4.jpeg.png

m34 = -1 / d (d值的是人眼到屏幕的距離,值一般在500 - 1000之間比較合適)卿捎;

Core Animation 3D仿射變換知識(shí)

ios7之后提供的物理動(dòng)效

UIGravityBehavior 重力
UICollisionBehavior 碰撞
UISnapBehavior 吸附
UIPushBehavior 推力
UIAttachmentBehavior 關(guān)聯(lián)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市径密,隨后出現(xiàn)的幾起案子午阵,更是在濱河造成了極大的恐慌,老刑警劉巖享扔,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件底桂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡惧眠,警方通過(guò)查閱死者的電腦和手機(jī)籽懦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)氛魁,“玉大人暮顺,你說(shuō)我怎么就攤上這事厅篓。” “怎么了拖云?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵贷笛,是天一觀的道長(zhǎng)应又。 經(jīng)常有香客問(wèn)我宙项,道長(zhǎng),這世上最難降的妖魔是什么株扛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任尤筐,我火速辦了婚禮,結(jié)果婚禮上洞就,老公的妹妹穿的比我還像新娘盆繁。我一直安慰自己,他們只是感情好旬蟋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布油昂。 她就那樣靜靜地躺著,像睡著了一般倾贰。 火紅的嫁衣襯著肌膚如雪冕碟。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,598評(píng)論 1 305
  • 那天匆浙,我揣著相機(jī)與錄音安寺,去河邊找鬼。 笑死首尼,一個(gè)胖子當(dāng)著我的面吹牛挑庶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播软能,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼迎捺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了查排?” 一聲冷哼從身側(cè)響起凳枝,我...
    開(kāi)封第一講書(shū)人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雹嗦,沒(méi)想到半個(gè)月后范舀,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡了罪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年锭环,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泊藕。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辅辩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情玫锋,我是刑警寧澤蛾茉,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站撩鹿,受9級(jí)特大地震影響谦炬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜节沦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一键思、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧甫贯,春花似錦吼鳞、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至渴逻,卻和暖如春疾党,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背裸卫。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工仿贬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人墓贿。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓茧泪,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親聋袋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子队伟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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