UIScrollView 常用的一些方法

1. @property(nonatomic)BOOLbounces //当滚动到内容边缘是否发生反弹,default isYES.
2. @property(nonatomic) BOOLalwaysBounceHorizontal; //是否只在水平发生反弹,当内容到达
边缘。。default is NO,
如果要只在水平反弹那么bounces必须为YES.
3. @property(nonatomic) BOOLalwaysBounceVertical   //当滚动到达边缘时,是否只有垂直边缘才发生
反弹。default is no.
4. @property(nonatomic) BOOLbouncesZoom;   //当在缩放时,到达图片最大缩放倍数(maximumZoomScale)
或者是最小缩放倍数( minimumZoomScale)时,为了告诉用户缩放倍数已达极限,是否发生动态反弹的效果来
告诉用户。defaults is YES.
5. @property(nonatomic) BOOLcanCancelContentTouches; //当手指触摸屏幕后,并没有开始拖动,而隔一段时间后
再开始拖动,这个属性决定是否scorllView里的图片是否会再继续随着手指的滑动,而图片跟着滑动。defualt is
NO,图片会跟着手指滑动而滑动。
6. @property(nonatomic) CGPointcontentOffset; //scrollView里的内容(如里面存的图片)的原点,距离scrollView的
frame属性里的原点(origin)的距离。按照一般思维来说,如scrollView的frame为(0,0,320,480),而scrollView里的
图片坐标为:(-320,0,320*2,480);那么contentOffset应该为(-320,0),但实际上是(320,0),可能是为了方便设置,取为
正吧,反正contentOffset的x,y是不可能为负的,那样代表滚动已到边缘,发生反弹或者不能再往边缘外拖动。
7. @property(nonatomic) CGSizecontentSize; //scrollView里能存储图片最大size。比如scrollView为屏幕
大小,而要在里面存放几张屏幕大小的图片,那么一定不能忘了在放图片之前设置contentSize.
8. @property(nonatomic, assign)id<UIScrollViewDelegate>delegate;  //scrollView的代理。如:
当要实现缩放图片时,必须实现UIScrollViewDelegate里的两个方法,且最大、最小缩放倍数必须不一样maximumZoomScale
,minimumZoomScale:
- (UIView *)viewForZoomingInScrollView:(UIScrollView*)scrollView; //返回要缩放的图片(必须在代理类里实现)
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollViewwithView:(UIView *)view atScale:(float)scale;
//重新确定缩放完后的缩放倍数.
常用来缩放方法:- (void)zoomToRect:(CGRect)rectanimated:(BOOL)animated,把从scrollView里截取的矩形
区域缩放到整个scrollView当前可视的frame里面。所以如果截取的区域大于scrollView的frame时,图片缩小,
如果截取区域小于frame,会看到图片放大。一般情况下rect需要自己计算出来。
比如,要把scrollView原来坐标点为(40,40)的内容周围内容在scrollView里放大一倍,可以求出需要从scrollView里
截取图片的frame,当然主要是求截取图片坐标原点,可以想象,内容放大一倍,那么截取图片的大小宽度肯定是
scrollView的frame大小一半。如下列方法:
- (CGRect) getRectWithScale:(float)scaleandCenter:(float)center
{
 CGRect newRect;
 newRect.size.width=scrollView.frame.size.width/scale;
 newRect.size.height=scrollView.frame.size.height.scale;
 newRect.origin.x=center.x-newRect.size.width/2;
 newRect.origin.y=center.y-newRect.size.height/2;
 return newRect;
}

1. 
@property(nonatomic,getter=isDirectionalLockEnabled ) BOOLdirectionalLockEnabled; //滚动方向的锁定。
如果一开始拖动方向是水平或者垂直,且该属性设置为YES,那么另外一个方向将会被锁定,不能在那个方向拖动了。如果
开始拖动方向为斜的,那么不会禁止任何一个方向的拖动。
2.  @property(nonatomic)UIScrollViewIndicatorSty le indicatorStyle;//拖动图片时,下面或者右侧的那个滚动进度条
显示的风格,当然也可以把这个滚动条取消。可以用下面属性:
@property(nonatomic) BOOLshowsHorizontalScrollInd icator;  //是否显示水平滚动条
@property(nonatomic) BOOLshowsVerticalScrollIndic ator;  //是否显示垂直滚动条,defaultis YES
3.  @property(nonatomic) floatmaximumZoomScale; //最大缩放倍数
  @property(nonatomic) floatminimumZoomScale;  //最大缩小倍数
通常情况下,最小倍数比scrollView的frame要小,而最大缩放倍数可能与contentSize有关,需要自己算出
最大缩放倍数,如:如果想最大缩放倍数为5倍,那么contentSize也应该设置为5倍scrollView的frame大小。
假如想要双击scrollView里的图片放大,或者支持两只手指在屏幕捏放实现图片缩放,必须重写覆盖继承自
UIResponder的几个交互方法:
﹣(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event;
﹣(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent*)event;
﹣(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event; 
4.@property(nonatomic,getter=isPagingEnabled) BOOLpagingEnabled;  //是否在拖动图片后,图片翻到
scrollView的下一个子视图开始边界. default is NO
@property(nonatomic, getter=isScrollEnabled) BOOLscrollEnabled;  //是否可以滚动。default isYES,
如果设置为NO,那么将scrollView将不会接受任何触摸事件。
- (void)setZoomScale:(float)scale animated:(BOOL)animated

滚动过程当中,其是在修改原点坐。当手指触摸后,scroll view暂时拦截触摸事件,使用一个计时器。假如在计时器到点后没有发生手指移事件,那么 scrollview 发送trackingevents 到被点 subview。假如在计时器到点前发生了移事件,那么scrollview 取消 tracking 自己滚动

    可以重

touchesShouldBegin:withEvent:inContentView: 决定自己是否接收 touch 事件
pagingEnabled:当 YES 会自动滚动 subview 边界,默NO
touchesShouldCancelInContentView: 开始 trackingmessages 消息subview 个方法,决定是否 trackingmessages 消息到subview。假如返回NO送。YES 送。假如canCancelContentTouches属性是NO个方法来影响如何滚动手势

    scrollview 还处缩放和平移手,要实现缩放和平移,必须实现委托viewForZoomingInScrollView:scrollViewDidEndZooming:withView:atScale:
两个方法。另外maximumZoomScaleminimumZoomScale 两个属性要不一

几个属性介

tracking
 touch 没有拖YES,否NO

zoomBouncing
当内容放大到最大或者最小的时候值 YES,否NO

zooming
当正在缩放时候值 YES,否 NO

decelerating
滚动后,手指放开但是继续滚动中。时候 YES,其它候是 NO

decelerationRate
置手指放开后的减速率

maximumZoomScale
一个浮点数,表示能放最大的倍数

minimumZoomScale 
一个浮点数,表示能最小的倍数

pagingEnabled
 YES 会自动滚的那个到 subview 界。默NO

scrollEnabled
决定是否可以滚动

delaysContentTouches
是个布尔值,当 YES 时候,用触碰开始,scrollview要延一会,看看是否用有意图滚动。假如滚动了,那么捕捉 touch-down 事件,否就不捕捉。假如NO,当用触碰, scrollview会立即触touchesShouldBegin:withEvent:inContentView:,默 YES

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值