UIScrollView属性及代理方法总结

来源:互联网 发布:算法第四版百度云 编辑:程序博客网 时间:2024/05/16 11:35

首先实现代理:

#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");}


0 0
原创粉丝点击