UIView 動畫 (整理筆記)

說明:此文僅為筆記囤锉,是本人根據(jù)參考他人自己總結(jié)的一些東西,查閱原文請戳這里:
iOS動畫篇:UIView動畫

彈珠.jpg

一护锤、簡介:

UIView 動畫實質(zhì)是對Core Animation的封裝官地,提供簡潔的動畫接口:

UIView動畫可以設置動畫的屬性有:

  • 大小變化 (frame)
  • 拉伸變化 (bounds)
  • 中心位置 (center)
  • 旋轉(zhuǎn) (transform)
  • 透明度 (alpha)
  • 背景色 (backgroundColor)
  • 拉伸內(nèi)容 (contentStretch)

二:具體方法:

1.動畫開始和結(jié)束方法:

A.動畫開始標記:

    // 第一個參數(shù): 動畫標識
    // 第二個參數(shù): 附加參數(shù),在設置代理情況下,此參數(shù)將發(fā)送到setAnimationWillStartSelector和setAnimationDidStopSelector所指定的方法烙懦,大部分情況驱入,設置為nil.
    [UIView beginAnimations:(nullable NSString *) context:(nullable void *)];

B.結(jié)束動畫標記:

    [UIView commitAnimations];

####2.動畫參數(shù)的設置方法:

    //動畫持續(xù)時間
    [UIView setAnimationDuration:(NSTimeInterval)];
//動畫的代理對象 
[UIView setAnimationDelegate:(nullable id)];

    //設置動畫將開始時代理對象執(zhí)行的SEL
    [UIView setAnimationWillStartSelector:(nullable SEL)];
//設置動畫延遲執(zhí)行的時間
[UIView setAnimationDelay:(NSTimeInterval)];

        //設置動畫的重復次數(shù)
    [UIView setAnimationRepeatCount:(float)];
//設置動畫的曲線
[UIView setAnimationCurve:(UIViewAnimationCurve)];
UIViewAnimationCurve的枚舉值如下:
UIViewAnimationCurveEaseInOut,         // 慢進慢出(默認值)
UIViewAnimationCurveEaseIn,            // 慢進
UIViewAnimationCurveEaseOut,           // 慢出
UIViewAnimationCurveLinear             // 勻速

    //設置是否從當前狀態(tài)開始播放動畫
    [UIView setAnimationBeginsFromCurrentState:YES];
    假設上一個動畫正在播放,且尚未播放完畢氯析,我們將要進行一個新的動畫:
    當為YES時:動畫將從上一個動畫所在的狀態(tài)開始播放
    當為NO時:動畫將從上一個動畫所指定的最終狀態(tài)開始播放(此時上一個動畫馬上結(jié)束)
//設置動畫是否繼續(xù)執(zhí)行相反的動畫
[UIView setAnimationRepeatAutoreverses:(BOOL)];   

    //是否禁用動畫效果(對象屬性依然會被改變亏较,只是沒有動畫效果)
    [UIView setAnimationsEnabled:(BOOL)];
//設置視圖的過渡效果
[UIView setAnimationTransition:(UIViewAnimationTransition) forView:(nonnull UIView *) cache:(BOOL)];
 第一個參數(shù):UIViewAnimationTransition的枚舉值如下
     UIViewAnimationTransitionNone,              //不使用動畫
     UIViewAnimationTransitionFlipFromLeft,      //從左向右旋轉(zhuǎn)翻頁
     UIViewAnimationTransitionFlipFromRight,     //從右向左旋轉(zhuǎn)翻頁
     UIViewAnimationTransitionCurlUp,            //從下往上卷曲翻頁
     UIViewAnimationTransitionCurlDown,          //從上往下卷曲翻頁
 第二個參數(shù):需要過渡效果的View
 第三個參數(shù):是否使用視圖緩存,YES:視圖在開始和結(jié)束時渲染一次掩缓;NO:視圖在每一幀都渲染
####3.實例代碼:
A.初始化代碼:
#import "ViewController.h"

@interface ViewController ()
// 積分 view
@property (nonatomic, strong) UIImageView *integralView;
// 卡券 view
@property (nonatomic, strong) UIImageView *cartCenterView;
// 簽到 view
@property (nonatomic, strong) UIImageView *signInView;
@end
    @implementation ViewController

    #pragma mark --- life circle

    - (void)viewDidLoad {
    
        [super viewDidLoad];
    
        [self.view addSubview:self.signInView];
    
        [self.view addSubview:self.cartCenterView];
    
        [self.view addSubview:self.integralView];
    
        self.view.backgroundColor = [UIColor whiteColor];
    
    }
#pragma mark --- getter and setter
// 簽到 view
- (UIImageView *)signInView {
    if (!_signInView) {
        CGFloat signInViewX = 60;
        CGFloat signInViewY = 120;
        CGFloat signInViewWidth = self.view.frame.size.width - (2 * signInViewX);
        CGFloat signInViewHeight = 100.0f;
   
        _signInView = [[UIImageView alloc] initWithFrame:CGRectMake(signInViewX, signInViewY, signInViewWidth, signInViewHeight)];
        _signInView.clipsToBounds = YES;
        _signInView.contentMode = UIViewContentModeScaleAspectFill;
        _signInView.image = [UIImage imageNamed:@"default_user_icon.png"];
    }
    return _signInView;
}

// 卡券 view
- (UIImageView *)cartCenterView {
    if (!_cartCenterView) {
    
        CGFloat cartCenterViewX = CGRectGetMinX(self.signInView.frame);
        CGFloat cartCenterViewY = CGRectGetMaxY(self.signInView.frame) + 10;
        CGFloat cartCenterViewWidth = self.signInView.frame.size.width/2.0;
        CGFloat cartCenterViewHeight = 60.0f;
 
        _cartCenterView = [[UIImageView alloc] initWithFrame:CGRectMake(cartCenterViewX, cartCenterViewY, cartCenterViewWidth, cartCenterViewHeight)];
        _cartCenterView.contentMode = UIViewContentModeScaleAspectFill;
        _cartCenterView.clipsToBounds = YES;
    _cartCenterView.image = [UIImage imageNamed:@"icon_gouwuche.png"];
    }
    return _cartCenterView;
}

// 積分
- (UIImageView *)integralView {
    if (!_integralView) {
        CGFloat integralViewX = CGRectGetMaxX(self.cartCenterView.frame);
        CGFloat integralViewY = CGRectGetMinY(self.cartCenterView.frame);
        CGFloat integralViewWidth = self.signInView.frame.size.width/2.0;
        CGFloat integralViewHeight = self.cartCenterView.frame.size.height;
    
        _integralView = [[UIImageView alloc] initWithFrame:CGRectMake(integralViewX, integralViewY, integralViewWidth, integralViewHeight)];
        _integralView.clipsToBounds = YES;
    _integralView.contentMode = UIViewContentModeScaleAspectFill;
        _integralView.image = [UIImage imageNamed:@"home_dingdan.png"];
    }
    return _integralView;
}

B.屬性變化動畫(以frame變化為例子):

// 改變 frame
- (void)changeFrame {
    [UIView beginAnimations:@"FrameAni" context:nil];
    [UIView setAnimationDuration:1.0];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationWillStartSelector:@selector(startAni:)];
    [UIView setAnimationDidStopSelector:@selector(stopAni:)];
    [UIView setAnimationRepeatCount:1.0];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    self.cartCenterView.frame = self.signInView.frame;
    [UIView commitAnimations];
}

// 開始 動畫
- (void)startAni:(NSString *)aniId {
    NSLog(@"%@ start",aniId);
}

// 結(jié)束 動畫
- (void)stopAni:(NSString *)aniId {
    NSLog(@"%@ stop",aniId);
}

效果圖:

UIViewChangeFrame.gif

C.轉(zhuǎn)場動畫效果(以Flip和curUp效果為例)

// 轉(zhuǎn)成動畫 (flip)
- (void)filpAnimation {
    [UIView beginAnimations:@"FlipAnimation" context:nil];
    [UIView setAnimationDuration:2.0];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationWillStartSelector:@selector(startAni:)];
    [UIView setAnimationDidStopSelector:@selector(stopAni:)];
    [UIView setAnimationRepeatCount:1.0];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.signInView cache:YES];
    self.signInView.image = [UIImage imageNamed:@"serviceActivity.png"];
    [UIView commitAnimations];
}

效果圖:

UIViewFlipAnimation.gif
// 轉(zhuǎn)場動畫 (curUp) (self.view)
- (void)curUpControllerViewAnimation {
    [UIView beginAnimations:@"FlipAnimation" context:nil];
    [UIView setAnimationDuration:1.0];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationWillStartSelector:@selector(startAni:)];
    [UIView setAnimationDidStopSelector:@selector(stopAni:)];
    [UIView setAnimationRepeatCount:1.0];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
    self.signInView.image = [UIImage imageNamed:@"serviceActivity.png"];
    [UIView commitAnimations];
}

效果圖:


UIViewCurUpAnimation.gif

三.UIView Block 動畫

iOS4.0以后增加了Block動畫塊雪情,提供了更簡潔的方式來實現(xiàn)動畫.

1.Block動畫方法

A.最簡潔的Block動畫:包含時間和動畫

[UIView animateWithDuration:(NSTimeInterval)  //動畫持續(xù)時間
              animations:^{
              //執(zhí)行的動畫
 }];

B.帶有動畫完成回調(diào)的Block動畫

 [UIView animateWithDuration:(NSTimeInterval)  //動畫持續(xù)時間
              animations:^{
            //執(zhí)行的動畫
 }                completion:^(BOOL finished) {
            //動畫執(zhí)行完畢后的操作
 }];

C.可以設置延時時間和過渡效果的Block動畫

[UIView animateWithDuration:(NSTimeInterval) //動畫持續(xù)時間
                   delay:(NSTimeInterval) //動畫延遲執(zhí)行的時間
                 options:(UIViewAnimationOptions) //動畫的過渡效果
              animations:^{
               //執(zhí)行的動畫
 }                completion:^(BOOL finished) {
               //動畫執(zhí)行完畢后的操作
 }];

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

 UIViewAnimationOptionLayoutSubviews            //進行動畫時布局子控件
 UIViewAnimationOptionAllowUserInteraction      //進行動畫時允許用戶交互
 UIViewAnimationOptionBeginFromCurrentState     //從當前狀態(tài)開始動畫
 UIViewAnimationOptionRepeat                    //無限重復執(zhí)行動畫
 UIViewAnimationOptionAutoreverse               //執(zhí)行動畫回路
 UIViewAnimationOptionOverrideInheritedDuration //忽略嵌套動畫的執(zhí)行時間設置
 UIViewAnimationOptionOverrideInheritedCurve    //忽略嵌套動畫的曲線設置
 UIViewAnimationOptionAllowAnimatedContent      //轉(zhuǎn)場:進行動畫時重繪視圖
 UIViewAnimationOptionShowHideTransitionViews   //轉(zhuǎn)場:移除(添加和移除圖層的)動畫效果
 UIViewAnimationOptionOverrideInheritedOptions  //不繼承父動畫設置

 UIViewAnimationOptionCurveEaseInOut            //時間曲線,慢進慢出(默認值)
 UIViewAnimationOptionCurveEaseIn               //時間曲線你辣,慢進
 UIViewAnimationOptionCurveEaseOut              //時間曲線巡通,慢出
 UIViewAnimationOptionCurveLinear               //時間曲線尘执,勻速

 UIViewAnimationOptionTransitionNone            //轉(zhuǎn)場,不使用動畫
 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)翻頁

D.Spring動畫
iOS7.0以后新增了Spring動畫(iOS系統(tǒng)動畫大部分采用Spring Animation窘行, 適用所有可被添加動畫效果的屬性)

     [UIView anima
teWithDuration:(NSTimeInterval)//動畫持續(xù)時間
                       delay:(NSTimeInterval)//動畫延遲執(zhí)行的時間
      usingSpringWithDamping:(CGFloat)//震動效果,范圍0~1图仓,數(shù)值越小震動效果越明顯
       initialSpringVelocity:(CGFloat)//初始速度罐盔,數(shù)值越大初始速度越快
                     options:(UIViewAnimationOptions)//動畫的過渡效果
                  animations:^{
                     //執(zhí)行的動畫
     }
                      completion:^(BOOL finished) {
                     //動畫執(zhí)行完畢后的操作
     }];

E.Keyframes動畫
IOS7.0后新增了關鍵幀動畫,支持屬性關鍵幀救崔,不支持路徑關鍵幀

 [UIView animateKeyframesWithDuration:(NSTimeInterval)//動畫持續(xù)時間
                            delay:(NSTimeInterval)//動畫延遲執(zhí)行的時間
                          options:(UIViewKeyframeAnimationOptions)//動畫的過渡效果
                       animations:^{
                     //執(zhí)行的關鍵幀動畫
 }
                       completion:^(BOOL finished) {
                     //動畫執(zhí)行完畢后的操作
 }];

UIViewKeyframeAnimationOptions的枚舉值如下惶看,可組合使用:

UIViewAnimationOptionLayoutSubviews           //進行動畫時布局子控件
UIViewAnimationOptionAllowUserInteraction     //進行動畫時允許用戶交互
UIViewAnimationOptionBeginFromCurrentState    //從當前狀態(tài)開始動畫
UIViewAnimationOptionRepeat                   //無限重復執(zhí)行動畫
UIViewAnimationOptionAutoreverse              //執(zhí)行動畫回路
UIViewAnimationOptionOverrideInheritedDuration //忽略嵌套動畫的執(zhí)行時間設置
UIViewAnimationOptionOverrideInheritedOptions //不繼承父動畫設置

UIViewKeyframeAnimationOptionCalculationModeLinear     //運算模式 :連續(xù)
UIViewKeyframeAnimationOptionCalculationModeDiscrete   //運算模式 :離散
UIViewKeyframeAnimationOptionCalculationModePaced      //運算模式 :均勻執(zhí)行
UIViewKeyframeAnimationOptionCalculationModeCubic      //運算模式 :平滑
UIViewKeyframeAnimationOptionCalculationModeCubicPaced //運算模式 :平滑均勻

各種運算模式的直觀比較如下圖:


UIViewKeyframeAnimationOptions效果對比圖.png

增加關鍵幀方法:

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

F.轉(zhuǎn)場動畫:
a.從舊視圖到新視圖的動畫效果

[UIView transitionFromView:(nonnull UIView *)
                 toView:(nonnull UIView *)
               duration:(NSTimeInterval)
                options:(UIViewAnimationOptions)
             completion:^(BOOL finished) {
                 //動畫執(zhí)行完畢后的操作
 }];

在該動畫過程中,fromView 會從父視圖中移除六孵,并將 toView 添加到父視圖中纬黎,注意轉(zhuǎn)場動畫的作用對象是父視圖(過渡效果體現(xiàn)在父視圖上)。調(diào)用該方法相當于執(zhí)行下面兩句代碼:

[fromView.superview addSubview:toView];
[fromView removeFromSuperview];

b.單個視圖的過渡效果

[UIView transitionWithView:(nonnull UIView *)
               duration:(NSTimeInterval)
                options:(UIViewAnimationOptions)
             animations:^{
             //執(zhí)行的動畫
 }
             completion:^(BOOL finished) {
             //動畫執(zhí)行完畢后的操作
 }];

2.實例代碼:

A.最簡潔的Block動畫:包含時間和動畫:

 // 改變 frame (時間和動畫)
- (void)blockChangeFrame {
    [UIView animateWithDuration:1.0 animations:^{
        self.cartCenterView.frame = self.signInView.frame;
    }];
}

效果圖:


UIViewBlockChangeFrame.gif

B.帶有動畫完成回調(diào)的Block動畫

 // 改變 frame (時間劫窒、動畫本今、完成回調(diào))
- (void)blockChangeFrameWithComplete {
    CGRect originalFrame = self.cartCenterView.frame;
    [UIView animateWithDuration:1.0 animations:^{
         self.cartCenterView.frame = self.signInView.frame;
    }completion:^(BOOL finished) {
         self.cartCenterView.frame = originalFrame;
    }];
}

效果圖:


UIViewBlockChangeFrameWithComplete.gif

C.設置延時時間和過渡效果的Block動畫

// 改變 frame (時間、延遲時間主巍、過渡動畫冠息、完成回調(diào))
- (void)blockChangeFrameWithDelayTimeAndComplete {
    CGRect originalFrame = self.cartCenterView.frame;
   [UIView animateWithDuration:1.0 delay:1.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
       self.cartCenterView.frame = self.signInView.frame;
   } completion:^(BOOL finished) {
       self.cartCenterView.frame = originalFrame;
   }];
}

效果圖:


UIViewBlockChangeFrameWithDelayTimeAndComplete.gif

D..Spring動畫

    // 彈簧動畫
    - (void)blockChangeFrameWithSpringAnimation {
        [UIView animateWithDuration:1.0 delay:0.5 usingSpringWithDamping:0.01 initialSpringVelocity:10.0f options:UIViewAnimationOptionCurveEaseInOut animations:^{
            self.cartCenterView.frame = self.signInView.frame;
        } completion:^(BOOL finished) {
            self.cartCenterView.hidden = YES;
        }];
    }

效果圖:


UIViewBlockChangeFrameWithSpringAnimtion.gif

E.Keyframes動畫

    // 關鍵 幀 放大 動畫
    - (void)blockAmplifyAnimation {
        self.signInView.transform = CGAffineTransformIdentity;
        self.signInView.image = [UIImage imageNamed:@"serviceActivity.png"];
        [UIView animateKeyframesWithDuration:1.5 delay:0 options:UIViewKeyframeAnimationOptionCalculationModeLinear animations:^{
            [UIView addKeyframeWithRelativeStartTime:0 relativeDuration:1/3.0 animations:^{
                self.signInView.transform = CGAffineTransformMakeScale(1.5, 1.5);
            }];
        
            [UIView addKeyframeWithRelativeStartTime:1/3.0 relativeDuration:1/3.0 animations:^{
                self.signInView.transform = CGAffineTransformMakeScale(0.8, 0.8);
            }];
        
            [UIView addKeyframeWithRelativeStartTime:2/3.0 relativeDuration:1/3.0 animations:^{
                self.signInView.transform = CGAffineTransformMakeScale(1.0, 1.0);
            }];

        } completion:^(BOOL finished) {
            NSLog(@"動畫結(jié)束");
        }];
    }

效果圖:


UIViewBlockKeyframeAmplyAnimation.gif

F.單個視圖的轉(zhuǎn)場動畫

    // 轉(zhuǎn)場 動畫 單個 視圖 過渡 效果
    - (void)blockTransitionWithSingleViewAnimation {
        [UIView transitionWithView:self.signInView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{
            self.signInView.image = [UIImage imageNamed:@"serviceActivity.png"];
        } completion:^(BOOL finished) {
            NSLog(@"動畫結(jié)束");
           self.view.backgroundColor = [UIColor lightGrayColor];
    }];
}

效果圖:


UIViewBlockSingleTransitionAnimation.gif

G.從舊視圖到新視圖的轉(zhuǎn)場動畫

    // 轉(zhuǎn)場 動畫 (舊視圖 到 新 視圖)
    - (void)blockTransitionFromViewToViewAnimation {
        UIImageView *tmpNewImageView = [[UIImageView alloc] initWithFrame:self.signInView.frame];
        tmpNewImageView.image = [UIImage imageNamed:@"serviceActivity.png"];
        [UIView transitionFromView:self.signInView toView:tmpNewImageView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {
             NSLog(@"動畫結(jié)束");
            self.view.backgroundColor = [UIColor lightGrayColor];
        }];
    }

效果圖:


UIViewBlockTransitionFromViewToViewAnimation.gif

四.最后

送上一張喜歡的圖片:

世界.jpg

這是gitHub鏈接地址:UIViewAnimation,大家有興趣可以看一下孕索,如果覺得不錯逛艰,麻煩給個喜歡或star,若發(fā)現(xiàn)問題請及時反饋,謝謝搞旭!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瓮孙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子选脊,更是在濱河造成了極大的恐慌,老刑警劉巖脸甘,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恳啥,死亡現(xiàn)場離奇詭異,居然都是意外死亡丹诀,警方通過查閱死者的電腦和手機钝的,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門翁垂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人硝桩,你說我怎么就攤上這事沿猜。” “怎么了碗脊?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵啼肩,是天一觀的道長。 經(jīng)常有香客問我衙伶,道長祈坠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任矢劲,我火速辦了婚禮赦拘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芬沉。我一直安慰自己躺同,他們只是感情好,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布丸逸。 她就那樣靜靜地躺著蹋艺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪椭员。 梳的紋絲不亂的頭發(fā)上车海,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機與錄音隘击,去河邊找鬼侍芝。 笑死,一個胖子當著我的面吹牛埋同,可吹牛的內(nèi)容都是我干的州叠。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼凶赁,長吁一口氣:“原來是場噩夢啊……” “哼咧栗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起虱肄,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤致板,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后咏窿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斟或,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年集嵌,在試婚紗的時候發(fā)現(xiàn)自己被綠了萝挤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片御毅。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖怜珍,靈堂內(nèi)的尸體忽然破棺而出端蛆,到底是詐尸還是另有隱情,我是刑警寧澤酥泛,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布今豆,位于F島的核電站,受9級特大地震影響揭璃,放射性物質(zhì)發(fā)生泄漏晚凿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一瘦馍、第九天 我趴在偏房一處隱蔽的房頂上張望歼秽。 院中可真熱鬧,春花似錦情组、人聲如沸燥筷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肆氓。三九已至,卻和暖如春底瓣,著一層夾襖步出監(jiān)牢的瞬間谢揪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工捐凭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拨扶,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓茁肠,卻偏偏與公主長得像患民,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子垦梆,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

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

  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫匹颤、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,066評論 4 62
  • 在iOS實際開發(fā)中常用的動畫無非是以下四種:UIView動畫托猩,核心動畫印蓖,幀動畫,自定義轉(zhuǎn)場動畫。 1.UIView...
    請叫我周小帥閱讀 3,082評論 1 23
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復雜扫腺,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,471評論 6 30
  • 一晃三年摆尝。閉上眼睛,2012年的7月因悲,驚心動魄的宗親工作的吧臺詞窮的宗親工作群規(guī)律所有人員外了么事情做橋梁施工圖的...
    就是一男人閱讀 283評論 0 0
  • 當一個沒有脾氣的人 真是一點都不搖滾
    heim_dn閱讀 251評論 0 0