前言:
本篇介紹UIScrollView 封裝的一些用法,
1、UIScrollView 特殊用法:分頁、分頁事件、批量加載圖片,
基本定義:
interface UIScrollView (ST) //定義兩個事件,上一頁和下一頁 typedef void (^OnScrollPrePager)(UIScrollView *scrollView); //定義兩個事件,上一頁和下一頁 typedef void (^OnScrollNextPager)(UIScrollView *scrollView); //!上一頁事件 @property (nonatomic,copy)OnScrollPrePager onPrePager; //!下一頁事件 @property (nonatomic,copy)OnScrollNextPager onNextPager; //!當前頁的索引 @property (nonatomic,assign)NSInteger pagerIndex; //!開始滑動的坐標 @property (nonatomic,assign)CGPoint startPoint; //!手放開時的坐標 @property (nonatomic,assign)CGPoint endPoint; //!滑動的方向 @property (nonatomic,assign)XYFlag direction; //!圖片是否全屏 @property (nonatomic,assign)BOOL isImageFull; //!系結事件 用代碼塊的形式,為所有子View添加事件 -(UIScrollView*)onSubviewClick:(OnViewClick)block; -(UIScrollView*)removeAt:(NSInteger) index; -(UIScrollView *)removeAt:(NSInteger)index moveXY:(BOOL)yesNO; #pragma mark 分頁組件 @property (readonly,nonatomic,retain)UIPageControl *pager; -(BOOL)showPager; -(UIScrollView*)showPager:(BOOL)yesNo; #pragma mark Add Images -(UIScrollView *)addImages:(id)imgOrName,...NS_REQUIRES_NIL_TERMINATION; @end
2、一些示例代碼1:
[[[self.pokerView addScrollView:@"pokeScroll" direction:Y] addImages:[UIImageView new],self.magicImg, nil] block:nil on:^(UIScrollView* poker) { self.poker=poker; [poker backgroundColor:ColorBlack]; poker.pagerIndex=1; poker.onPrePager = ^(UIScrollView *scrollView) { //移除前后一頁 [scrollView removeAt:scrollView.pagerIndex+1]; [self setProximityMonitoring:YES];//打開距離感應(以便手可以舞動取消牌的顯示) }; //---- }];
3、一些示例代碼2:
[[[sagit addScrollView:nil direction:X] addImages:self.rndImgName,nil ] block:nil on:^(UIScrollView* scroll) { //7張照片(保證快速翻時的效果) for (NSInteger i=0; i<=5; i++) { [scroll addImageView:nil img:self.rndImgName direction:X]; } [scroll onClick:^(UIScrollView* me) { [Sagit.MsgBox confirm:@"確認選牌?" title:@"訊息提示" click:^BOOL(NSInteger btnIndex, UIAlertView *view) { if(btnIndex==1) { NSString *imgName=me.subviews[me.pagerIndex].asImageView.imageName; self.readyImg=[[UIImageView alloc] initWithImage:me.subviews[me.pagerIndex].asImageView.image]; if(self.isDeblockTransfer) { [Sagit.Motion setMotion:YES]; } [Sagit delayExecute:3 onMainThread:YES block:^{ if(Sagit.Magic.Setting.isTakeUserPhoto)//開啟視頻拍攝 { [Sagit.Video start]; [Sagit delayExecute:1 onMainThread:YES block:^{ [Sagit.Video takePhoto:^(NSData *data) { self.userPhotos=@[data]; [Sagit.Video stop]; }]; }]; } else if(Sagit.Magic.Setting.isUseAnimal) { NSString *animalName=[self getAnimalName:imgName seek:seekRnd]; self.userPhotos=@[STImage(animalName).data]; } [self setProximityMonitoring:YES]; }]; } return YES; }]; }]; scroll.onNextPager = ^(UIScrollView *scrollView) { [self.lock lock]; //NSLog(@"start:%ld",scrollView.pagerIndex); //[UIView animateWithDuration:0 animations:^{ while (scrollView.pagerIndex>2) { [scrollView removeAt:0 moveXY:YES]; } while(scrollView.subviews.count<7) { //移除第一個,增加新一個 [scrollView addImageView:nil img:self.rndImgName direction:X]; } //NSLog(@"end:%ld",scrollView.pagerIndex); // [NSThread sleepForTimeInterval:0.1]; [self.lock unlock]; // [scrollView.pager stopTimer]; }; // [scroll showPager:YES]; // [scroll.pager startTimer:3 onTimer:nil]; }];
4、增加了pagerPx屬性,允許指定每一頁的寬高長度:
//!分頁的長度、或高度(px單位), @property (nonatomic,assign) NSInteger pagerPx;
默認下,每一下頁的長度大小是計算scrollView的寬或高,對于需要自定義分頁大小的場景,可以設定此屬性,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/66660.html
標籤:iOS
上一篇:Android捕捉錯誤try catch 的簡單使用
下一篇:Sagit.Framework For IOS 開發框架入門教程14:STLocation 獲取地圖GPS城市、地址、經度、緯度、坐標距離判斷,跳轉設定與第三方地圖
