UIScrollView 常用的一些方法


http://blog.sina.com.cn/s/blog_8f77ca2f01019ald.html


1. @property(nonatomic) BOOL bounces //当滚动到内容边缘是否发生反弹,default is YES.
2. @property(nonatomic) BOOL alwaysBounceHorizontal; //是否只在水平发生反弹,当内容到达
边缘。。default is NO,
如果要只在水平反弹那么bounces必须为YES.
3. @property(nonatomic) BOOL alwaysBounceVertical   //当滚动到达边缘时,是否只有垂直边缘才发生
反弹。default is no.
4. @property(nonatomic) BOOL bouncesZoom;   //当在缩放时,到达图片最大缩放倍数(maximumZoomScale)
或者是最小缩放倍数( minimumZoomScale)时,为了告诉用户缩放倍数已达极限,是否发生动态反弹的效果来
告诉用户。defaults is YES.
5. @property(nonatomic) BOOL canCancelContentTouches; //当手指触摸屏幕后,并没有开始拖动,而隔一段时间后
再开始拖动,这个属性决定是否scorllView里的图片是否会再继续随着手指的滑动,而图片跟着滑动。defualt is
NO,图片会跟着手指滑动而滑动。
6. @property(nonatomic) CGPoint contentOffset; //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) CGSize contentSize; //scrollView里能存储图片最大size。比如scrollView为屏幕
大小,而要在里面存放几张屏幕大小的图片,那么一定不能忘了在放图片之前设置contentSize.
8. @property(nonatomic, assign) id<UIScrollViewDelegate> delegate;  //scrollView的代理。如:
当要实现缩放图片时,必须实现UIScrollViewDelegate里的两个方法,且最大、最小缩放倍数必须不一样maximumZoomScale
,minimumZoomScale:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;  //返回要缩放的图片(必须在代理类里实现)
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale;
//重新确定缩放完后的缩放倍数.
常用来缩放方法:- (void)zoomToRect:(CGRect)rect animated:(BOOL)animated,把从scrollView里截取的矩形
区域缩放到整个scrollView当前可视的frame里面。所以如果截取的区域大于scrollView的frame时,图片缩小,
如果截取区域小于frame,会看到图片放大。一般情况下rect需要自己计算出来。
比如,要把scrollView原来坐标点为(40,40)的内容周围内容在scrollView里放大一倍,可以求出需要从scrollView里
截取图片的frame,当然主要是求截取图片坐标原点,可以想象,内容放大一倍,那么截取图片的大小宽度肯定是
scrollView的frame大小一半。如下列方法:
- (CGRect) getRectWithScale:(float)scale andCenter:(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 ) BOOL directionalLockEnabled; //滚动方向的锁定。
如果一开始拖动方向是水平或者垂直,且该属性设置为YES,那么另外一个方向将会被锁定,不能在那个方向拖动了。如果
开始拖动方向为斜的,那么不会禁止任何一个方向的拖动。
2.  @property(nonatomic) UIScrollViewIndicatorSty le indicatorStyle; //拖动图片时,下面或者右侧的那个滚动进度条
显示的风格,当然也可以把这个滚动条取消。可以用下面属性:
@property(nonatomic) BOOL showsHorizontalScrollInd icator;  //是否显示水平滚动条
@property(nonatomic) BOOL showsVerticalScrollIndic ator;  //是否显示垂直滚动条,default is YES
3.  @property(nonatomic) float maximumZoomScale; //最大缩放倍数
  @property(nonatomic) float minimumZoomScale;  //最大缩小倍数
通常情况下,最小倍数比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) BOOL pagingEnabled;  //是否在拖动图片后,图片翻到
scrollView的下一个子视图开始边界. default is NO
@property(nonatomic, getter=isScrollEnabled) BOOL scrollEnabled;  //是否可以滚动。default is YES,
如果设置为NO,那么将scrollView将不会接受任何触摸事件。
- (void)setZoomScale:(float)scale animated:(BOOL)animated

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

    可以重

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

    scroll view 还处缩放和平移手,要实现缩放和平移,必须实现委托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 时候,用触碰开始,scroll view要延一会,看看是否用有意图滚动。假如滚动了,那么捕捉 touch-down 事件,否就不捕捉。假如NO,当用触碰, scroll view会立即触touchesShouldBegin:withEvent:inContentView:,默 YES

canCancelContentTouches
 YES 时候,用触碰后,然后在一定时间内没有移scrollView  tracking events,然后用手指足够长度触发滚动事件,候,scrollView 送了 touchesCancelled:withEvent: subview,然后 scroView 开始滚动。假如 NOscrollView 发送tracking events 后,就算用手指,scrollView 也不会滚动

contentSize
里面内容的大小,也就是可以滚动的大小,默0,没有滚动效果。

showsHorizontalScrollIndicator
滚动时是否示水平滚动

showsVerticalScrollIndicator
滚动时是否示垂直滚动

bounces
 yes,就是滚动过边界会反有反回来的效果。假如是NO,那么滚动到达界会立刻停止。

bouncesZoom
 bounces 类似,在于:这个效果反映在放上面,假如缩放最大缩放,那么会反效果;假如是NO到达最大或者最小的候立即停止。

directionalLockEnabled
 NO,可以在垂直和水平方向同。当YES ,假如一开始是垂直或者是水平运,那么接下来会锁定另外一个方向的滚动 假如一开始是对角方向滚动不会禁止某个方向

indicatorStyle
滚动条的样式,基本只是设置颜色3颜色:默、黑、白

scrollIndicatorInsets
设置滚动条的位置

 


    NSString *filePath = [self documentsPath:@"usefile.txt"]; 

    //filePath 这个指定的文件里读

    NSArray *userinfo = [NSArray arrayWithContentsOfFile:filePath];

    

    

    int i;

    int n = 0;

    UIScrollView *newview =[[UIScrollView alloc]init];

    newview.frame =CGRectMake(00320400);

    

    [self.view addSubview:newview];

    for(i =0; i<userinfo.count;i++)

    { 

        UIButton *buttonview = [UIButton buttonWithType:UIButtonTypeRoundedRect];

        [buttonview setTitle:[userinfo objectAtIndex:i] forState:UIControlStateNormal];

        buttonview.frame = CGRectMake(2020+n, 28030);

        //背景颜色

        //buttonview.backgroundColor = [UIColor redColor];

        //设置button填充图片

        //[buttonview setImage:[UIImage imageNamed:@"three.png"] forState:UIControlStateNormal];


        [newview addSubview:buttonview];

        //[self.view addSubview:button2]

        n = n+35;

        NSLog(@"%i",n);

        

    }

//    [newview release];


    [newview setContentSize:CGSizeMake(320, 420)];

    //是否在右边显示竖直拖动条

    newview.showsVerticalScrollIndicator = YES

    //是否在底部显示垂直拖动条

    newview.showsHorizontalScrollIndicator = YES

    

    //当滑动到边缘时是否反弹 default is YES

    //newview.bounces = NO;


    newview.canCancelContentTouches = NO;

    //newview.pagingEnabled = NO;

   

    //    [self.view addSubview:newview];


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值