UIScrollView属性及代理方法总结

首先实现代理:

#import <UIKit/UIKit.h>
@interface ViewController : UIViewController<UIScrollViewDelegate>
@property (nonatomic, retain) UIScrollView *scrollView;
@end

然后,初始化

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize scrollView;

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.frame.size.width, self.view.frame.size.height)];
    
    //只能一个方向滑动
    scrollView.directionalLockEnabled = YES;
    
    //是否翻页
    scrollView.pagingEnabled = YES;
    
    //背景色
    scrollView.backgroundColor = [UIColor blueColor];
    
    //垂直方向的滚动指示
    scrollView.showsVerticalScrollIndicator = YES;
    
    //滚动指示的风格
    scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
    
    //水平方向的滚动指示
    scrollView.showsHorizontalScrollIndicator = NO;
    
    //指定代理
    scrollView.delegate = self;
    
    //在scrollView上添加一张图片
    //图片高度是视图高度的2倍
    CGRect imgFrame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height*2);
    UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"test.png"]];
    [imgView setFrame:imgFrame];
    
    //imgView内容显示样式
    [imgView setContentMode:UIViewContentModeScaleAspectFit];
    
    //将imgView添加到scrollView上
    [scrollView addSubview:imgView];
    
    //设置scrollView的内容大小与imgView的大小相同
    [scrollView setContentSize:CGSizeMake(imgView.frame.size.width, imgView.frame.size.height)];
    
    [self.view addSubview:scrollView];
    
}


属性
属性作用                                     
CGSize  contentOffSet监控目前滚动的位置
CGPoint  contentSize滚动达范围
UIEdgeIsets contentInset视图在scrollview 中的位置
id <UIScrollViewDelegate> delegate代理
BOOL directionalLockEnabled是否只能在一个方向滚动
BOOL bounces碰到边框是否反弹
BOOL alwaysBounceVertical垂直方向遇到边框是否反弹
BOOL alwaysBounceHorizonal水平方向遇到边框是否反弹
BOOL pagingEnabled是否整页翻动
BOOL scrollEnabled是否能滚动
BOOL showsHorizontalScrollIndicator是否显示水平滚动条
BOOL showVerticalScrollIndicator是否显示垂直滚动条
UIEdgeInsets scrollIndicatorInsets滚动条在scrollView中的位置
UIScrollViewIndicatorStyle 滚动条样式
float decelerationRate改变scrollView的减速位置
BOOL tracking监控当前目标是否正在被跟踪
BOOL dragging监控当前目标是否正在被拖拽
BOOL decelerating监控是否正在减速
BOOL delaysContentTouches是否延时调用开始滚动的方法
BOOL canCancelContentTouches是否接触取消touch的事件
float minimunZoomScale缩小达最小比例
float maxmumZoomScale放大达最大比例
float zoomScale设置变化比例
BOOL bounceZoom控制缩放的时候是否会反弹
BOOL zooming判断控件的大小是否正在改变
BOOL soomBouncing 判断是否正在进行缩放反弹
BOOL scrollsToTop控制控件滚动到顶部

 



代理方法的使用:

#pragma mark - UIScrollView Delegate Methods

/*调用时机:当 contentOffSet 改变时调用*/
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    /* 在这里你可以写上关于UIPageControl的页面设置的算法。如下
    int index = fabs(scrollView.contentOffset.x) /scrollView.frame.size.width;
    pageControl.currentPage = index;
    */
}

//缩放比例改变时调用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
    NSLog(@"zoom scale 改变");
}

// 当开始拖拽时调用(需要拖拽一定的时间或距离)
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    NSLog(@"开始拖拽");
}

//将要停止拖拽时调用
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0)
{
    //注意该方法常用在当用户滚动完屏幕时加载图片,HTTP请求加载,这样会提高效率
    NSLog(@"scrollViewWillEndDragging");
}

//已经停止拖拽,decelerate默认为true
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    NSLog(@"scrollViewDidEndDragging");
}

//将要减速
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;
{
    NSLog(@"scrollViewWillBeginDecelerating");
}

//已经减速
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    NSLog(@"scrollViewDidEndDecelerating");
}

//滚动动画停止时执行,代码改变时出发,也就是setContentOffset改变时
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
    // called when setContentOffset/scrollRectVisible:animated: finishes. not called if not animating
    NSLog(@"scrollViewDidEndScrollingAnimation");

}

//设置缩放视图,是scrollview的子视图
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    // return a view that will be scaled. if delegate returns nil, nothing happens
    UIView *view = [[UIView alloc] init];
    return view;
}



//开始缩放视图时调用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
{
    // called before the scroll view begins zooming its content
    NSLog(@"scrollViewWillBeginZooming");
}


//完成缩放时调用
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
{
    // scale between minimum and maximum. called after any 'bounce' animations
    NSLog(@"scrollViewDidEndZooming");
}


//如果你不是完全滚动到滚轴视图的顶部,你可以轻点状态栏,那个可视的滚轴视图会一直滚动到顶部,那是默认行为,你可以通过该方法返回NO来关闭它
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
{
    // return a yes if you want to scroll to the top. if not defined, assumes YES
    NSLog(@"scrollViewShouldScrollToTop = yes");
    return YES;
}



- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
    // called when scrolling animation finished. may be called immediately if already at top
     NSLog(@"scrollViewDidScrollToTop");
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值