zoukankan      html  css  js  c++  java
  • UIScrollView

    UIScrollView

    UIScrollView全部API学习。

    //1.设定滚定条的样式
    
    typedef
    NS_ENUM(NSInteger, UIScrollViewIndicatorStyle) {
    
    UIScrollViewIndicatorStyleDefault, // black with white border. good against any background
    黑白边框
    
    UIScrollViewIndicatorStyleBlack, // black only. smaller. good against a white background
    纯黑边框
    
    UIScrollViewIndicatorStyleWhite // white only. smaller. good against a black background
    纯白边框
    
    };
    
    //2.在UIScrollView中键盘的消失方式
    
    typedef
    NS_ENUM(NSInteger, UIScrollViewKeyboardDismissMode) {
    
    UIScrollViewKeyboardDismissModeNone,
    默认样式
    
    UIScrollViewKeyboardDismissModeOnDrag,
    // dismisses the keyboard when a drag begins
    设定键盘的消失方式为拖拉页面
    
    UIScrollViewKeyboardDismissModeInteractive,
    // the keyboard follows the dragging touch off screen, and may be pulled upward again to cancel the dismiss
    设定键盘消失方式为拖拉并点击页面
    
    } NS_ENUM_AVAILABLE_IOS(7_0);
    
    //3.这个参数可以设置减速的速率
    
    UIKIT_EXTERN
    const CGFloat UIScrollViewDecelerationRateNormal
    NS_AVAILABLE_IOS(3_0);
    
    //4.这个参数可以设置减速的速率
    
    UIKIT_EXTERN
    const CGFloat UIScrollViewDecelerationRateFast
    NS_AVAILABLE_IOS(3_0);
    
    //5.从内容视图的原点偏移的一个点
    
    @property(nonatomic)
    CGPoint contentOffset;
    //6.内容视图的大小
    
    @property(nonatomic)
    CGSize contentSize;
    
    //7.内容视图的距离,是从封闭的滚动视图插图
    
    @property(nonatomic)
    UIEdgeInsets contentInset;
    around content
    
    //8.滚动视图的代理
    
    @property(nonatomic,assign)
    id<UIScrollViewDelegate> delegate;
    
    //9.一个bool值,用来决定是否在某一特定方向禁用滚动
    
    @property(nonatomic,getter=isDirectionalLockEnabled)
    BOOL directionalLockEnabled;
    
    //10.控制滚动视图是否反弹过去内容的边缘,然后再返回一个布尔值
    
    @property(nonatomic)
    BOOL bounces;
    
    //11.如果这个属性被设置成YES而且bounces的值是YES,垂直拖动是允许的内容,即使小鱼滚动视图的边界,默认是NO
    
    @property(nonatomic)
    BOOL alwaysBounceVertical;
    
    //12.一个布尔值,决定是否反弹总是发生在垂直滚动到达结束内容,默认值是NO
    
    @property(nonatomic)
    BOOL alwaysBounceHorizontal;
    
    //13.一个布尔值
    决定是否弃用分页滚动视图
    
    @property(nonatomic,getter=isPagingEnabled)
    BOOL pagingEnabled;
    
    //14.决定是否弃用滚动
    
    @property(nonatomic,getter=isScrollEnabled)
    BOOL scrollEnabled;
    
    //15.控制水平滚动指标是否可见的
    
    @property(nonatomic)
    BOOL showsHorizontalScrollIndicator;
    
    //16.控制垂直滚动指标是否是可见的
    
    @property(nonatomic)
    BOOL showsVerticalScrollIndicator;
    
    //17.滚动指标点到滚动视图的边缘的距离
    
    @property(nonatomic)
    UIEdgeInsets scrollIndicatorInsets;
    //18.指示器的风格设置
    
    @property(nonatomic)
    UIScrollViewIndicatorStyle indicatorStyle;
    
    //19.默认减速率
    
    @property(nonatomic)
    CGFloat decelerationRate
    NS_AVAILABLE_IOS(3_0);
    
    //20.设置从内容原点偏移到指定点的方法
    
    - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;
    //21.滚动一个特定区域的内容以便它在接受是可见的
    
    - (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated;
    //22.暂时显示滚动指标
    
    - (void)flashScrollIndicators;
    
    //23.返回判断是否用户碰触内容触发滚动(只读)
    
    @property(nonatomic,readonly,getter=isTracking)
    BOOL tracking;
    
    //24.一个布尔值
    知识用户是否已经开始滚动内容
    
    @property(nonatomic,readonly,getter=isDragging)
    BOOL dragging;
    
    //25.返回的内容是否在滚动视图后,用户接触他们的手指(只读)
    
    @property(nonatomic,readonly,getter=isDecelerating)
    BOOL decelerating;
    
    //26.一个布尔值,决定是否推迟滚动视图触摸手势的处理
    
    @property(nonatomic)
    BOOL delaysContentTouches;
    
    //27.如果这个值设置为YES,那么当你在UIScrollView上面放置任何子视图的时候,当你在子视图上移动的时候,UIScrollView会给子视图发送touchCancel消息,而如果该属性设置为NO,ScollView本身不处理这个消息,全部交给子视图处理
    
    @property(nonatomic)
    BOOL canCancelContentTouches;
    
    //28.自定义默认行为,当手指触摸在显示的内容由子类重写
    
    - (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView
    *)view;
    
    //29.它开始发送跟踪邮件的内容视图后动视图调用此方法。如果它从这种方法受到NO便停止拖动和转发触摸时间的内容子视图。
    
    - (BOOL)touchesShouldCancelInContentView:(UIView *)view;
    
    //30.浮点值
    指定可应用于滚动视图的内容的最低比例因子
    
    @property(nonatomic)
    CGFloat minimumZoomScale;
    
    //31.一个浮点值指定可用于滚动视图的内容的最大规模的因素
    
    @property(nonatomic)
    CGFloat maximumZoomScale;
    
    //32.一个浮点值
    指定目前用于滚动视图的内容的比例因子
    
    @property(nonatomic)
    CGFloat zoomScale
    NS_AVAILABLE_IOS(3_0); //33.一个浮点数指定当前的缩放比例
    
    - (void)setZoomScale:(CGFloat)scale animated:(BOOL)animated
    NS_AVAILABLE_IOS(3_0);
    
    //34.缩小到特定区域的内容,所以它是在接收器中可见
    
    - (void)zoomToRect:(CGRect)rect animated:(BOOL)animated
    NS_AVAILABLE_IOS(3_0);
    
    //35.一个布尔值,决定当当缩放超过上限或是下限时是否滚动视图推动内容缩放
    
    @property(nonatomic)
    BOOL bouncesZoom;
    
    //36.一个布尔值
    指示内容是否认为正在方法或者缩小(只读)
    
    @property(nonatomic,readonly,getter=isZooming)
    BOOL zooming;
    
    //37.一个布尔值
    指示缩放已超过指定的接受范围
    
    @property(nonatomic,readonly,getter=isZoomBouncing)
    BOOL zoomBouncing;
    
    //38.一个布尔值
    控制是否滚动到顶部的姿态是有效地
    
    @property(nonatomic)
    BOOL scrollsToTop;
    
    //39.拖动手势(只读)
    
    @property(nonatomic,
    readonly) UIPanGestureRecognizer *panGestureRecognizer
    NS_AVAILABLE_IOS(5_0);
    
    //40.向里向外捏用于缩放
    
    @property(nonatomic,
    readonly) UIPinchGestureRecognizer *pinchGestureRecognizer
    NS_AVAILABLE_IOS(5_0);
    
    //41.设置见哦按的小事样式
    
    @property(nonatomic)
    UIScrollViewKeyboardDismissMode keyboardDismissMode
    NS_AVAILABLE_IOS(7_0);
    
    @end
    
    @protocol UIScrollViewDelegate<NSObject>
    
    @optional
    
    //42.scrollView正在滚动的时候调用
    
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView;
    
    //43.scrollView正在被拖动的时候调用
    
    - (void)scrollViewDidZoom:(UIScrollView *)scrollView
    NS_AVAILABLE_IOS(3_2);
    
    //44. scrollView开始拖拽的时候调用
    
    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
    
    //45. scrollView将要结束拖拽的时候调用
    
    - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity
    targetContentOffset:(inout
    CGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0);
    
    //46. scrollView完成拖拽的时候调用
    
    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
    
    //47. scrollView将开始降速的时候调用
    
    - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;
    
    //48. scrollView在减速停止了时候执行,手触摸时候执行
    
    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
    
    //49. 滚动动画停止时执行代码改变时触发,也就是setContentOffset改变的时候
    
    - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;
    
    //50.返回一个放大或者缩小的视图
    
    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
    
    //51.开始放大或者缩小时候调用
    
    - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView
    *)view NS_AVAILABLE_IOS(3_2);
    
    //52.缩放结束时候调用
    
    - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView
    *)view atScale:(CGFloat)scale;
    
    //53.是否支持滚动至顶部
    
    - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;
    
    //54.滚动顶部时候调用该方法
    
    - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;
    
    @end
    

    UIScrollView的常见属性

    @property(nonatomic) CGPoint contentOffset;
    这个属性用来表示UIScrollView滚动的位置
    (其实就是内容左上角与scrollView左上角的间距值,初始位置)
    
    @property(nonatomic) CGSize contentSize;
    这个属性用来表示UIScrollView内容的尺寸,滚动范围(能滚多远)
    
    @property(nonatomic) UIEdgeInsets contentInset;
    这个属性能够在UIScrollView的4周增加额外的滚动区域,一般用来避免scrollView的内容被其他控件挡住

    @property(nonatomic) BOOL bounces;
    设置UIScrollView是否需要弹簧效果
    
    @property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled;
    设置UIScrollView是否能滚动
    
    @property(nonatomic) BOOL showsHorizontalScrollIndicator;
    是否显示水平滚动条
    
    @property(nonatomic) BOOL showsVerticalScrollIndicator;
    是否显示垂直滚动条
    
    //分页。默认是 _scrollView 的宽度
    _scrollView.pagingEnabled = YES;
    

    UIScrollView不能滚动的条件

    • contentOffset属性
    • AntoLayout 取消
    • scrollEnabled 属性 = YES;
    • userInteractionEnabled 属性 = YES;

    监听scrollView各种行为的3大步骤(比如让控制器监听scrollView的行为)

    • 设置scrollView的delegate(代理)为控制器对象
    scrollView.delegate = 控制器;
    
    • 控制器要遵守UIScrollViewDelegate协议
    @interface 控制器 ()  <UIScrollViewDelegate>
    
    @end
    
    • 控制器要实现UIScrollViewDelegate协议里面的代理方法
    #pragma mark - <UIScrollViewDelegate>  代理方法
    /**
     *  只要scrollView在滚动,就会调用这个方法(监听scrollView的滚动)
     */
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
        NSLog(@"scrollViewDidScroll");
    }
    
    //开始拖拽
    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
    
    //停止拖拽
    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
    

    缩放

    • 设最大、最小缩放比例
    _scrollView.minimumZoomScale = 0.3;
    _scrollView.maximumZoomScale = 2.0;
    
    //拖拽调用得方法(返回的是需要进行缩放的控件)
    -(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
    {
        return _beautifulView;
    }
    

    代理使用的一般规律

    • 作用:用来监听控件的某些行为
    • 代理:是控制器对象
    • 代理:是id类型,并且是弱指针
    • 代理协议的格式:控件类名Delegate,比如UIScrollViewDelegate、UITextFieldDelegate
    • 代理方法:方法名一般是控件名开头,比如UIScrollView的代理方法一般以scrollView开头

    如何监听控件的行为

    • 通过addTarget:
      • 只有继承自UIControl的控件,才有这个功能
      • UIControlEventTouchUpInside : 点击事件(UIButton)
      • UIControlEventValueChanged : 值改变事件(UISwitch、UISegmentControl、UISlider)
      • UIControlEventEditingChanged : 文字改变事件(UITextField)
    • 通过delegate
      • 只有拥有delegate属性的控件,才有这个功能

    NSTimer的使用

    • 开启定时器
    @property (nonatomic, weak) NSTimer *timer;
    
    // 返回一个自动开始执行任务的定时器
    self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextPage:) userInfo:@"123" repeats:YES];
    
    // 修改NSTimer在NSRunLoop中的模式:NSRunLoopCommonModes
    // 主线程不管在处理什么操作,都会抽时间处理NSTimer
    [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
    
    • 关闭定时器
    [self.timer invalidate];
  • 相关阅读:
    06 | x86架构:有了开放的架构,才能打造开放的营商环境
    02 | 学习路径:爬过这六个陡坡,你就能对Linux了如指掌
    01 | 入学测验:你究竟对Linux操作系统了解多少?
    String、StringBuffer与StringBuilder区别
    JavaSE语言基础之字符串
    JavaSE语言基础之数组及其排序
    JavaSE语言基础之流程控制语句
    JavaSE语言基础之数据类型
    Java开发环境配置
    shell 脚本 自增
  • 原文地址:https://www.cnblogs.com/ShaoYinling/p/4603316.html
Copyright © 2011-2022 走看看