最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS實現(xiàn)大雪紛飛動畫

 更新時間:2018年06月22日 10:07:02   作者:桂雛菊  
這篇文章主要為大家詳細(xì)介紹了iOS實現(xiàn)大雪紛飛動畫,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了iOS實現(xiàn)大雪紛飛動畫的具體代碼,供大家參考,具體內(nèi)容如下

1.結(jié)果展示

美麗的雪花,勾起了多少美好的回憶。

2.制作思路

其實創(chuàng)作這樣一個大學(xué)紛飛的場景是十分簡單的,簡單到你看了教程之后想不會都不行。OK,下面國際慣例,講解一下思路吧。

1.創(chuàng)建一個數(shù)組用來保存大量的雪花

_imagesArray = [[NSMutableArray alloc] init];
  for (int i = 0; i < 1000; ++ i) {
    UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"snow"]];
    float x = IMAGE_WIDTH;
    imageView.frame = CGRectMake(IMAGE_X, -30, x, x);
    imageView.alpha = IMAGE_ALPHA;
    [self.view addSubview:imageView];
    [_imagesArray addObject:imageView];
  }

2.使用時鐘(CADisplayLink)來控制下雪,為什么不使用NSTimer呢。其實是可以的,只是(CADisplayLink)刷幀更快一些。

//創(chuàng)建時鐘,并且添加到主循環(huán)中
CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(makeSnow)];
[link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];

3.下雪,就是把數(shù)組當(dāng)做隊列來使用。

每次從數(shù)組頭部取出一個雪花并且刪除其在數(shù)組中的占位。
讓雪花飄落,通過UIView動畫完成frame,transform等改變。
當(dāng)動畫完成之后,將取出的雪花再次放進數(shù)組的尾部

- (void)makeSnow
{
  if (_imagesArray.count > 0) {
    UIImageView *imageView = _imagesArray[0];
    [_imagesArray removeObjectAtIndex:0];
    [self snowFall:imageView];
  }
}

- (void)snowFall:(UIImageView *)imageView
{
  [UIView animateWithDuration:10 animations:^{
    imageView.frame = CGRectMake(imageView.frame.origin.x, Main_Screen_Height, imageView.frame.size.width, imageView.frame.size.height);
    imageView.transform = CGAffineTransformMakeScale(0.3, 0.3);
    imageView.transform = CGAffineTransformRotate(imageView.transform, M_PI);
  } completion:^(BOOL finished) {
    float x = IMAGE_WIDTH;
    imageView.frame = CGRectMake(IMAGE_X, -30, x, x);
    [_imagesArray addObject:imageView];
  }];
}

3.有代碼有真相

#define IMAGE_X        arc4random()%(int)Main_Screen_Width
#define IMAGE_ALPHA      ((float)(arc4random()%10))/10
#define IMAGE_WIDTH      arc4random()%20 + 10
#define PLUS_HEIGHT      Main_Screen_Height/25

#define Main_Screen_Height   [[UIScreen mainScreen] bounds].size.height
#define Main_Screen_Width    [[UIScreen mainScreen] bounds].size.width

#import "ViewController.h"

@interface ViewController ()
@property (nonatomic ,strong) NSMutableArray *imagesArray;
@property (nonatomic , strong) UIImageView *imageView;
@end

@implementation ViewController

- (void)loadView
{
  UIImageView *imageView = [[UIImageView alloc]initWithFrame:[UIScreen mainScreen].bounds];
  imageView.image = [UIImage imageNamed:@"backgound.jpg"];
  imageView.contentMode = UIViewContentModeScaleAspectFill;
  self.view = imageView;

}

- (void)viewDidLoad
{
  [super viewDidLoad];

  _imagesArray = [[NSMutableArray alloc] init];
  for (int i = 0; i < 1000; ++ i) {
    UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"snow"]];
    float x = IMAGE_WIDTH;
    imageView.frame = CGRectMake(IMAGE_X, -30, x, x);
    imageView.alpha = IMAGE_ALPHA;
    [self.view addSubview:imageView];
    [_imagesArray addObject:imageView];
  }

  //創(chuàng)建時鐘,并且添加到主循環(huán)中
  CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(makeSnow)];
  [link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
}


- (void)makeSnow
{
  if (_imagesArray.count > 0) {
    UIImageView *imageView = _imagesArray[0];
    [_imagesArray removeObjectAtIndex:0];
    [self snowFall:imageView];
  }
}

- (void)snowFall:(UIImageView *)imageView
{
  [UIView animateWithDuration:10 animations:^{
    imageView.frame = CGRectMake(imageView.frame.origin.x, Main_Screen_Height, imageView.frame.size.width, imageView.frame.size.height);
    imageView.transform = CGAffineTransformMakeScale(0.3, 0.3);
    imageView.transform = CGAffineTransformRotate(imageView.transform, M_PI);
  } completion:^(BOOL finished) {
    float x = IMAGE_WIDTH;
    imageView.frame = CGRectMake(IMAGE_X, -30, x, x);
    [_imagesArray addObject:imageView];
  }];
}

4.Demo也不能少

下載地址:snow

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 99%?iOS開發(fā)都不知道的KVO崩潰分析詳解

    99%?iOS開發(fā)都不知道的KVO崩潰分析詳解

    這篇文章主要為大家介紹了99%?iOS開發(fā)都不知道的KVO崩潰分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • iOS新增繪制圓的方法實例代碼

    iOS新增繪制圓的方法實例代碼

    這篇文章主要給大家介紹了關(guān)于iOS新增繪制圓的方法,文中通過示例代碼介紹的非常詳細(xì),對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 詳解iOS App開發(fā)中改變UIButton內(nèi)部控件的基本方法

    詳解iOS App開發(fā)中改變UIButton內(nèi)部控件的基本方法

    這篇文章主要介紹了iOS App開發(fā)中改變UIButton內(nèi)部控件的基本方法,文章開頭也順帶總結(jié)了一些UIButton的基本用法,示例代碼為Objective-C,需要的朋友可以參考下
    2016-03-03
  • iOS實現(xiàn)頂部標(biāo)簽式導(dǎo)航欄及下拉分類菜單

    iOS實現(xiàn)頂部標(biāo)簽式導(dǎo)航欄及下拉分類菜單

    這篇文章主要為大家詳細(xì)介紹了iOS實現(xiàn)頂部標(biāo)簽式導(dǎo)航欄及下拉分類菜單的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • iOS仿微信搖一搖動畫效果加震動音效實例

    iOS仿微信搖一搖動畫效果加震動音效實例

    這篇文章主要介紹了iOS仿微信搖一搖動畫效果加震動音效實例,詳細(xì)介紹了微信搖一搖功能的實現(xiàn)原理,非常具有實用價值,需要的朋友可以參考下。
    2017-03-03
  • iOS如何為圓角添加陰影效果示例代碼

    iOS如何為圓角添加陰影效果示例代碼

    最近一個項目中需要用到投影的效果,還要是圓角,通過查找相關(guān)的資料終于解決了,所以覺著有必要分享出來,下面這篇文章主要給大家介紹了關(guān)于iOS如何為圓角添加陰影效果的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • Swift 進階 —— map 和 flatMap的使用

    Swift 進階 —— map 和 flatMap的使用

    這篇文章主要介紹了Swift map和flatMap的相關(guān)資料,幫助大家更好的理解和使用Swift,感興趣的朋友可以了解下
    2020-09-09
  • IOS 禁止縮放頁面的實現(xiàn)方法

    IOS 禁止縮放頁面的實現(xiàn)方法

    這篇文章主要介紹了IOS 禁止縮放頁面的實現(xiàn)方法的相關(guān)資料,這里主要介紹了IOS 10如何通過設(shè)置來實現(xiàn)禁止縮放及實現(xiàn)方法,需要的朋友可以參考下
    2017-07-07
  • iOS如何將圖片裁剪成圓形

    iOS如何將圖片裁剪成圓形

    這篇文章主要為大家詳細(xì)介紹了iOS如何將圖片裁剪成圓形,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • iOS性能優(yōu)化淺析

    iOS性能優(yōu)化淺析

    給大家通過理論和經(jīng)驗分析了IOS性能優(yōu)化各方面的問題,以及處理的對應(yīng)辦法,有需要的朋友參考下。
    2018-02-02

最新評論

朔州市| 克什克腾旗| 金塔县| 青阳县| 桂阳县| 伊川县| 乌审旗| 巴东县| 濮阳县| 靖西县| 天等县| 东乌珠穆沁旗| 惠水县| 温泉县| 英德市| 襄垣县| 海安县| 兴宁市| 伊宁市| 秭归县| 常州市| 图木舒克市| 瓮安县| 永昌县| 崇义县| 海安县| 松滋市| 易门县| 邵武市| 紫阳县| 阜宁县| 诸暨市| 陇南市| 合山市| 晋城| 普安县| 吉林市| 广南县| 芮城县| 汝阳县| 重庆市|