美文网首页
UI基础控件- UIScrollView

UI基础控件- UIScrollView

作者: 彼岸的黑色曼陀罗 | 来源:发表于2016-08-22 20:01 被阅读0次

    什么是UIScrollView

    • 概念
      • 当展示内容较多,超出屏幕时,可以通过滚动手势查看屏幕以外的内容
      • UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容
    • 基本使用
      • 将需要的内容添加到UIScrollView
      • 设置contentSize,告诉UIScrollView滚动的范围
    • UIScrollView基本使用

    • contentSize

      • 可滚动的尺寸: contentSize的尺寸 - scrollView的尺寸
      • 弹簧效果
      • 注意点: 不能滚动的原因
        • 1.contentSize的尺寸小于等于scrollView的尺寸
        • 2.没有设置contentSize
        • 3.scrollEnabled的属性给禁止了(scrollView的属性)
        • 4.userInteractionEnabled 是否为YES(父类的属性,任何控件都有这个属性)
    • scrollEnabled 和userInteractionEnabled的区别

      • 注意点:如果设置了userInteractionEnabled的属性为NO,scrollView以及其内部的所有子控件都不能和用户交互

      • 细节补充:按钮

        • disabled状态
        • 注意点: 只有设置按钮的enabled的属性为NO才能达到disabled状态
        • 设置userinteractionEnabled是达不到disabled状态的
    • clipsToBounds :超出边框的内容被裁减掉

    • scrollView常见属性
      • bounces :Bool类型,默认是YES ,有弹簧效果

      • alwaysBounceVertical : 默认是NO

      • alwaysBounceHorizontal :默认是NO

        • YES应用:下拉刷新
        • UIActivityIndicatorView:系统默认有位置
        • 调用startAnimation才能显示ActivityIndicatorView
        • 不管有没有设置contentSize,总是有弹簧效果
      • showsVerticalScrollIndicator:显示竖直滚动条,默认为YES

      • showsHorizontalScrollIndicator:显示水平滚动条,默认为YES

    • 注意:不要通过索引去subViews这个数组中访问scrollView的子控件
      • scrollView的子控件
        • imageView
        • 水平滚动条UIImageView
        • 垂直滚动条UIImageView
    • scrollView重要属性
      • contentOffset: 内容的偏移量
        • 作用:
          • 1.控制scrollView内容偏移的位置
          • 2.得知scrollView内容偏移的位置
        • contentOffset = scrollView左上角 - 内容的左上角
    • contenInset
      • contentInset :内容的内边距
      • UIEdgeInsetsMake();
      • 作用:增加额外的滚动区域
      • 应用:音乐播放器的歌词内容超过屏幕尺寸,从屏幕中间开始显示
    • 监听UIScrollView的行为(代理)
      • 设置代理属性:给属性赋值,即设置scrollView的代理对象为控制器

      • 遵守协议<UIScrollViewDelegate> :写在类扩展里

      • 实现代理方法

        • 注意:
        • scrollViewDidScroll:当scrollView正在滚动的时候调用,调用非常频繁
          • didEndDragging:之后还在滚动的原因:惯性
        • scrollViewWillBeginDragging:用户即将开始拖拽的时候调用
        • scrollViewWilEndDragging:即将停止拖拽时候调用
        • scrollViewDidEndDragging:已经停止拖拽时候调用
        • scrollViewDidEndDecelerating:减速完毕的时候调用(完全静止,停止滚动)
      • 代理使用注意

        • 1.任何对象都可以作为scrollView的代理
          • 自定义一个类Car,创建对象作为scrollView的代理
          • 代理属性赋值之后创建的car对象就被销毁了
          • 代理属性是weak修饰的,对象创建那一刻,没有强指针引用,所以一创建就销毁了
          • 解决:创建一个属性,引用这个对象
          • 一般情况下,让控制器成为scrollView的代理
        • 2.代理属性为什么是weak修饰?
          • strong会导致循环引用的问题
    • ios中常见控件的事件监听
      • UIButton

      • addTarget:self action:@selector(方法) forConrollEvents:事件

      • 只要触发了事件,就会调用方法

      • addTarget:是UIControll的方法

      • 系统自带的按钮没有代理属性,如果想使用代理监听,可以自定义按钮

      • touchUpInside事件

      • UIScrollView

        • 设置代理:控制器成为scrollView的代理
        • 遵守协议
        • 实现代理方法
      • UISegmentedControll

        • 这个控件不太常用,一般在公司中自定义
        • initWithItem:有默认尺寸
        • 继承UIControll,addTarget:方法监听
        • valueChange事件
        • selectedSegmentIndex:默认选中值
      • UITextField 文本输入框(特殊)

        • connect Hardware Keyboard 勾选上
        • 继承自UIControll,可以用addTarget:方法监听
          • EditingDidBegin事件:开始编辑
          • EditingChanged事件:文字改变
          • EditingDidEnd事件:结束编辑
            • 退出键盘:点击控制器的view退出键盘,结束编辑
            • [self.view endEditing:YES]- 常用
            • textField辞去第一响应者,resignFirstResponder
            • [self.textField endEditing:YES]
        • 有delegate属性,也可以使用代理方法监听
          • 设置代理属性
          • 遵守协议 UITextFieldDelegate
          • 实现代理方法
            • shouldChangeCharactersInRange:文字改变,YES
              • 参数:string用户输入的内容
              • 返回值:YES-允许用户输入,NO-禁止用户输入
    • 利用scrollView实现内容缩放
      • 设置代理
      • 遵守协议
      • 实现代理方法
        • viewForZoomingInScrollView:在scrollView里面哪一个view需要缩放(返回需要缩放的子控件),返回值为UIView
      • 设置缩放比例
        • maxmumZoomScale :最大缩放比例
        • minmumZoomScale :最小缩放比例
      • 注意:模拟器手指默认在中间显示
        • 先按住option + shift,然后松开shift键 按鼠标左键

    相关文章

      网友评论

          本文标题:UI基础控件- UIScrollView

          本文链接:https://www.haomeiwen.com/subject/yawisttx.html