zoukankan      html  css  js  c++  java
  • Sagit.Framework For IOS 自动布局教程:14、UIScrollView 特殊用法

    前言:

    本篇介绍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];
        }];
  • 相关阅读:
    windows快捷键十八式(win10)
    解决滚动条突然出现导致的页面错位问题
    用命令行撤销工作区的所有更改(修改文件&&新增文件)
    用animation的steps属性制作帧动画
    配置Gitlab pages和Gitlab CI
    zookeeper中的分布式一致性协议
    kafka消息的处理机制(五)
    Paxos算法原理
    kafka同步异步消费和消息的偏移量(四)
    kafka客户端和服务端开发(三)
  • 原文地址:https://www.cnblogs.com/cyq1162/p/13509220.html
Copyright © 2011-2022 走看看