zoukankan      html  css  js  c++  java
  • iOS-UIScrollView以及代理

    一、UIScrollView
    1.常见属性
    @property(nonatomic) CGPoint contentOffset; // 记录UIScrollView滚动的位置
    @property(nonatomic) CGSize contentSize; // 内容尺寸(能滚动的范围)
    @property(nonatomic) UIEdgeInsets contentInset; // 额外增加的滚动区域(在上下左右4个边缘)
    @property(nonatomic,assign) id<UIScrollViewDelegate> delegate; // 代理对象
    @property(nonatomic) BOOL bounces; // 是否有弹簧效果
    @property(nonatomic) BOOL showsHorizontalScrollIndicator; // 是否显示水平滚动条
    @property(nonatomic) BOOL showsVerticalScrollIndicator; // 是否显示垂直滚动条
    // tip : 重点掌握contentSize、contentOffset、delegate
    
    2.捏合手势缩放
    1> 缩放原理详解
    * 当用户尝试缩放UIScrollView的时候,UIScrollView会尝试向它的delegate(代理对象)发送一条消息,询问要缩放哪一个子控件
    * 换种说法,也就是说,UIScrollView会尝试调用delegate的某个方法 ,询问要缩放哪一个子控件,并且该方法的返回值就是需要缩放的子控件
    
    2> 缩放原理总结
    * UIScrollView先设置delegate对象
    * UIScrollView必须知道delegate是通过哪个方法返回需要缩放的子控件,delegate必须实现那个返回需要缩放子控件的方法
    * UIScrollView要跟delegate对象协商好:用哪一个方法返回需要缩放的子控件
    * 那个返回需要缩放子控件的方法就是:
    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
    
    3.缩放的一般实现步骤(比如缩放UIScrollView内部的UIImageView)
    1> 设置UIScrollView的delegate为控制器(self)
    2> 控制器遵守UIScrollViewDelegate协议  <UIScrollViewDelegate>
    3> 控制器实现-(UIView *)viewForZoomingInScrollView:方法,返回需要缩放的子控件
    4> 设置最大和最小缩放比例
    
    二、代理设计模式
    1.使用场合
    1> A想让B帮忙做一些事情,就让B成为A的代理
    2> A想通知一下B发生了某些事情,或者想传递一些数据给B,就让B成为A的代理
    3> B想监听A所做的一些事情,就让B成为A的代理
    
    2.使用步骤
    1> 定义一份协议
    2> B要遵守协议,实现相应的方法
    3> A中要定义一个代理属性 id<协议> delegate;
    4> 创建B对象,设置A的delegate属性为B对象
    
    三、键盘处理
    1.退出键盘的2种方法
    1> 让文本框把键盘退回去(调用UITextField的resignFirstResponder方法)
    [textField resignFirstResponder];
    
    2> 一次性退出任何键盘
    [self.view endEditing:YES];
    
    2.自定义键盘
    @property (readwrite, retain) UIView *inputView;
    
    3.自定义键盘顶部显示的控件
    @property (readwrite, retain) UIView *inputAccessoryView;

    分页效果

    1.设置pagingEnabled=YES即可,UIScrollView会被分割成多个独立页面,用户的滚动体验则变成了页面翻转
    2.一般会配合UIPageControl增强分页效果,UIPageControl常用属性:
    3.NSInteger numberOfPages : 总页数
    4.NSInteger currentPage : 当前的页码
    5.BOOL hidesForSinglePage : 当只有一页的时候,是否要隐藏视图
    6.监听UIPageControl的页面改变:
    // 添加监听器
    [pageControl addTarget:self action:@selector(pageChange:)
          forControlEvents:UIControlEventValueChanged];
    // 监听方法
    - (void)pageChange:(UIPageControl *)pageControl
    {  
    }
  • 相关阅读:
    如何区分DDR1 DDR2 DDR3内存条
    《闪电战》德军攻略
    WINDOWS SERVER 2008 R2安装指南
    【django】django学得好迷茫啊 来个学习规划吧
    【阅读】提问的智慧+有效的报告BUG
    【Python】logging模块学习笔记
    【接口测试】进度表
    【django】django深入学习笔记
    【随笔】2014工作总结
    【英语】Bingo口语笔记(47)
  • 原文地址:https://www.cnblogs.com/DarbyCJ/p/3651161.html
Copyright © 2011-2022 走看看