亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS 仿百度外賣-首頁重力感應的實例

2020-07-26 02:59:40
字體:
來源:轉載
供稿:網友

今天帶來的是仿百度外賣首頁的重力感應..(由于只能真機測試,手里測試機只有5s,所以有些地方并沒有適配其他機型,需要的還需要根據真機自行適配)

來簡單說下實現吧,之前重力感應都是用UIAccelerometer實現的,但是,好像是從iOS 4 以后,這個方法就廢棄了,它被直接封裝到了CoreMotion框架中,所以現在有關重力感應,加速計什么的都需要通過CoreMotion框架實現,這也算是蘋果對于重力感應的整合吧.本文對CoreMotion框架只是進行了簡單的使用,想要更深的使用,還是請自行 google(百度上的文檔非常少).

好了.下面就是實現代碼

(注意這里需要導入系統框架CoreMotion.framework)

// // ViewController.m // 仿百度外賣首頁-重力感應 // // Created by Amydom on 16/12/5. // Copyright © 2016年 Amydom. All rights reserved. //  #import "ViewController.h" #import <CoreMotion/CoreMotion.h>  @interface ViewController ()<UIScrollViewDelegate>{      NSTimeInterval updateInterval;   CGFloat setx;//scroll的動態偏移量    } @property (nonatomic,strong) CMMotionManager *mManager;  @property (nonatomic , strong)UIScrollView *myScrollView;  @property (nonatomic , assign)CGFloat offsetX;//初始偏移量  @property (nonatomic , assign)NSInteger offset;   @end  @implementation ViewController  - (void)viewDidAppear:(BOOL)animated_{      [super viewDidAppear:animated_];   //在界面已經顯示后在調用方法(優化)   [self startUpdateAccelerometerResult:0];    }  - (void)viewDidLoad {   [super viewDidLoad];   self.view.backgroundColor = [UIColor whiteColor];   [self createView];    }  - (void)createView{      //collectionView   UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc]init];   UICollectionView *myCollection = [[UICollectionView alloc]initWithFrame:[UIScreen mainScreen].bounds collectionViewLayout:flowLayout];   myCollection.backgroundColor = [UIColor whiteColor];   [self.view addSubview:myCollection];            _myScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 22, self.view.frame.size.width, 100)];   _myScrollView.backgroundColor = [UIColor lightGrayColor];   _myScrollView.delegate = self;   [self.view addSubview:_myScrollView];         for (int i = 0; i < 8; i ++) {          NSString *name = [NSString stringWithFormat:@"%d.jpg",i + 1];     UIImageView *image = [[UIImageView alloc]initWithFrame:CGRectMake(5 + 885 * i, 10, 80, 80)];     image.image = [UIImage imageNamed:name];     image.backgroundColor = [UIColor orangeColor];     image.layer.masksToBounds = YES;     image.layer.cornerRadius = 40;     [_myScrollView addSubview:image];     //偏移量為最后 image 的 frame + origin     _myScrollView.contentSize = CGSizeMake (image.frame.size.width + image.frame.origin.x, 10);             }        }  //手指觸碰時 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{       _offsetX = scrollView.contentOffset.x;   [self stopUpdate];    }  - (void)scrollViewDidScroll:(UIScrollView *)scrollView{      //優化處理   setx = scrollView.contentOffset.x;      _offset = scrollView.contentOffset.x - _offsetX;        if (_offset > 0) {          //left        }else{          //right            }       } //手指離開時 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{      [self startUpdateAccelerometerResult:0];    }  #pragma mark - 重力感應 - (CMMotionManager *)mManager {   if (!_mManager) {     updateInterval = 1.0/15.0;     _mManager = [[CMMotionManager alloc] init];   }   return _mManager; } //開始 - (void)startUpdateAccelerometerResult:(void (^)(NSInteger))result {    if ([self.mManager isAccelerometerAvailable] == YES) {     //回調會一直調用,建議獲取到就調用下面的停止方法,需要再重新開始,當然如果需求是實時不間斷的話可以等離開頁面之后再stop     [self.mManager setAccelerometerUpdateInterval:updateInterval];     [self.mManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error)      {        double x = accelerometerData.acceleration.x;        double y = accelerometerData.acceleration.y;        if (fabs(y) >= fabs(x))        {//前后          if (y >= 0){            //Down          }          else{            //Portrait          }                  } else { //左右                   if (x >= 0){                        setx += 10;                        if (setx <= 360) {              //由于以10為單位改變 contentOffset, 會出現頓的現象,加上動畫就可解決這個問題              [UIView animateWithDuration:0.1 animations:^{                                _myScrollView.contentOffset = CGPointMake(setx, 0);              }];              //模仿 scroll 的回彈效果              if (setx == 360) {                                [UIView animateWithDuration:0.5 animations:^{                                    _myScrollView.contentOffset = CGPointMake(setx + 50, 0);                                  } completion:^(BOOL finished) {                                    [UIView animateWithDuration:0.5 animations:^{                                        _myScrollView.contentOffset = CGPointMake(setx , 0);                   }];                                  }];                              }                          }else{                            setx = 360;            }                           }else{                        setx -= 10;                        if (setx >= 0) {                            [UIView animateWithDuration:0.1 animations:^{                                _myScrollView.contentOffset = CGPointMake(setx, 0);               }];                            //模仿 scroll 的回彈效果              if (setx == 0) {                                [UIView animateWithDuration:0.5 animations:^{                                    _myScrollView.contentOffset = CGPointMake(setx - 50, 0);                                  } completion:^(BOOL finished) {                                    [UIView animateWithDuration:0.5 animations:^{                                        _myScrollView.contentOffset = CGPointMake(setx, 0);                                      }];                                  }];               }                          }else{                            setx = 0;                          }          }        }      }];   } }  //停止感應方法 - (void)stopUpdate {   if ([self.mManager isAccelerometerActive] == YES)   {     [self.mManager stopAccelerometerUpdates];   } } //離開頁面后停止(移除 mManager) - (void)dealloc {   //制空,防止野指針   _mManager = nil; }   - (void)didReceiveMemoryWarning {   [super didReceiveMemoryWarning];   // Dispose of any resources that can be recreated. }   @end 

到這里,就可以進行真機測試了..

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
福利微拍一区二区| 在线免费看av不卡| 国产精品久久久久av| 亚洲精品国产美女| 国产色婷婷国产综合在线理论片a| 热草久综合在线| 91丝袜美腿美女视频网站| 97国产成人精品视频| 亚洲欧洲av一区二区| 久久精品色欧美aⅴ一区二区| 国产精品午夜国产小视频| 国产精品美乳一区二区免费| 日本国产精品视频| 91九色视频导航| 55夜色66夜色国产精品视频| 久久福利视频导航| 日韩美女视频在线观看| 亚洲精品国产成人| 成人免费淫片视频软件| 色狠狠av一区二区三区香蕉蜜桃| 精品国产91久久久久久老师| 色综合久久久久久中文网| 亚洲人成电影网站色www| 九九精品在线播放| 日av在线播放中文不卡| 午夜精品久久久久久99热软件| 2019精品视频| 黑人巨大精品欧美一区免费视频| 国产精品在线看| 日韩在线观看免费| 精品国产91久久久久久老师| 亚洲视频在线观看免费| 国产精品久久久久久久午夜| 中文在线资源观看视频网站免费不卡| 人人做人人澡人人爽欧美| 狠狠躁夜夜躁久久躁别揉| 日韩视频永久免费观看| 色婷婷久久av| 亚洲国产精品女人久久久| 亚洲视频专区在线| 国内揄拍国内精品少妇国语| 国产一区二区三区四区福利| 欧美性猛交xxxx黑人猛交| 91精品久久久久久| 亚洲激情第一页| 国产午夜精品理论片a级探花| 欧美性受xxxx白人性爽| 免费91麻豆精品国产自产在线观看| 97久久精品在线| 97在线免费观看视频| 亚洲va码欧洲m码| 狠狠躁18三区二区一区| 中文字幕视频在线免费欧美日韩综合在线看| 精品国产91久久久久久| 亚洲欧美日韩精品| 亚洲永久免费观看| 亚洲日本欧美中文幕| 国产精品一区二区女厕厕| 欧美疯狂做受xxxx高潮| 国产精品人成电影| 久久精品小视频| 久久视频在线播放| 91沈先生作品| 亚洲女性裸体视频| 亚洲美女精品久久| 国外成人在线视频| 欧美性高潮床叫视频| 国产欧美日韩丝袜精品一区| 久久久久久久久久久网站| 亚洲精品自拍第一页| 日韩美女在线观看一区| 伊人男人综合视频网| 国产精品免费视频久久久| 国产自产女人91一区在线观看| 欧美影院久久久| 久久免费观看视频| 欧美日韩午夜剧场| 久久久久久成人| 久久久噜噜噜久久| 成人国产精品免费视频| 中文欧美日本在线资源| 日韩极品精品视频免费观看| 欧美精品videos| 韩国精品久久久999| 欧美日韩亚洲一区二区| 黄色精品在线看| 国产成人91久久精品| 日韩国产欧美区| 亚洲视频国产视频| 77777亚洲午夜久久多人| 亚洲成人网在线观看| 久久av中文字幕| 亚洲性69xxxbbb| 国产女精品视频网站免费| 日韩美女av在线免费观看| 久久97久久97精品免视看| 久久资源免费视频| 成人黄色中文字幕| 亚洲bt天天射| 18一19gay欧美视频网站| 亚洲欧美国产精品久久久久久久| 在线播放国产一区二区三区| 自拍偷拍亚洲一区| 久久好看免费视频| 中文字幕无线精品亚洲乱码一区| 亚洲系列中文字幕| 91精品中国老女人| 亚洲精品久久久久久久久久久| 国产精品成人一区二区三区吃奶| 亚洲国产精品小视频| 国产精品美女久久| 亚洲成人黄色在线| 亚洲高清色综合| 欧美激情久久久久久| www日韩中文字幕在线看| 97人人模人人爽人人喊中文字| 精品动漫一区二区| 欧美性生交xxxxx久久久| 中文精品99久久国产香蕉| 成人国产精品色哟哟| 精品久久中文字幕| 久久免费观看视频| 久久国产精品视频| 亚洲一区二区三区成人在线视频精品| 黑人狂躁日本妞一区二区三区| 久久国产精品久久久久久| 日韩中文字幕在线免费观看| 欧美色道久久88综合亚洲精品| 亚洲精品www久久久久久广东| 欧美xxxx14xxxxx性爽| 欧美精品制服第一页| 97视频在线观看免费高清完整版在线观看| 成人写真视频福利网| 亚洲成人免费网站| 一级做a爰片久久毛片美女图片| 在线播放国产一区中文字幕剧情欧美| 久久午夜a级毛片| 国产亚洲欧美日韩美女| 欧美日韩中文在线| 欧美日韩免费一区| 欧美重口另类videos人妖| 欧美高清理论片| 国产精品高清网站| 亚洲精品动漫100p| 亚洲综合视频1区| 亚洲精品久久久久久下一站| 国产日韩欧美日韩| 97热在线精品视频在线观看| 狠狠躁夜夜躁久久躁别揉| 久久好看免费视频| 亚洲aaaaaa| 免费99精品国产自在在线| 亚洲久久久久久久久久久| 97精品免费视频| 亚洲视频精品在线| 日本精品视频在线观看| 91久久国产精品91久久性色| 国产精品爽爽爽爽爽爽在线观看| www.欧美视频| 久久久久久高潮国产精品视| 欧美一级成年大片在线观看| 日韩在线观看免费高清| 91啪国产在线| 欧美亚洲在线播放|