UIScrollView的理解

基本使用UIScrollView使用

  • UIScrollView 介绍
    1>UIScrollView是一种控件,继承自UIView
    2>用来实现”滚动”和”缩放”的控件

  • UIScrollView设置滚动的基本步骤(进行滚动和缩放的是内容)
    1>创建一个UIScrollView
    2>向UIScrollView中添加内容(UIImageView)
    3>设置UIScrollView内容的大小(contenSize)

  • UIScrollView实现图片滚动
    1>拖一个UIScrollView到屏幕
    2>拖一个UIImageView到UIScrollView中
    3>设置UIImageView的显示图片,并根据实际设置的图片的大小修改UIImageView的大小
    4>在控制器的viewDidLoad方法中,设置UIScrollView的contenSize为图片的实际大小(UIImageView的Image属性的size)

  • UIScrollView无法滚动可能的原因及解决办法分析

    • 没有设置contenSize
    • scrollEnabled = NO
    • 没有接收到触摸事件: userInteractionEnabled = NO
    • 没有取消autolayout功能等原因

      • UIScrollView的 frame.size 与 contentSize 的区别
      • frame.size指的是: UIScrollView的可视区域的大小, UIScrollView本身的大小
      • contentSize指的是: UIScrollView中所包含的内容的大小(要滚动的实际内容的大小)
      • 总结: 在UIScrollView的frame.size这么大的范围内, 要显示contentSize这么大的内容。是否需要滚动, 取决于contentSize是否比frame.size大

UIScrollView常见属性
* contentSize (内容尺寸)

  • contentOffset(内容偏移量,CGPoint类型)
    含义:
    1> 当UIScrollView内部的内容滚动时, 内容相对于UIScrollView左上角的偏移
    2> 另一种理解方式: 内容滚动到了什么位置

** 注意: 可以通过代码来设置这个属性的值, 就相当于是通过代码实现滚动了(无需用户手指来触摸滚动)

  • contentInset(内容的内边距,UIEdgeInset类型)
    含义:
    1> 设置UIScrollView的内容在拖动以后, 内容距离UIScrollView的内边距。(联想按钮的内边距属性: Inset)
    2> 另一种思考方式: 想象成把内容加大了, 在内容本身的周围加了一圈”外边距”。

  • UIScrollView 其他属性
    @property(nonatomic) BOOL bounces;
    设置UIScrollView是否需要弹簧效果

@property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled;
设置UIScrollView是否能滚动

@property(nonatomic) BOOL showsHorizontalScrollIndicator;
是否显示水平滚动条

@property(nonatomic) BOOL showsVerticalScrollIndicator;
是否显示垂直滚动条

  • 代理设计模式在 UIScrollView 中的应用
  • 通过代理来监听事件
  • 设置代理可以通过”拖线”的方式或者是代码的方式

  • 通过”代码”和”拖线”的方式设置代理

    • 设置代理的基本步骤:
      1. 为scroll view 设置delegate属性(设置代理对象)
      1. 让代理对象遵守代理协议
      1. 让代理对象, 实现协议中的方法

UIScrollView常用代理方法
// 用户开始拖拽时调用
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;

// 滚动到某个位置时调用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;

// 用户结束拖拽时调用
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;

// 用户使用捏合手势时调用
- (UIView )viewForZoomingInScrollView:(UIScrollView )scrollView;

即将开始缩放的时候调用
- (void)scrollViewWillBeginZooming:(UIScrollView )scrollView withView:(UIView )view

正在缩放的时候调用
(void)scrollViewDidZoom:(UIScrollView *)scrollView

缩放完毕的时候调用
- (void)scrollViewDidEndZooming::(UIScrollView *)scrollView

  • 代理设计模式的总结(UIAlertView、UIActionSheet、UIScrollView都是通过代理来监听事件的)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值