iOS-UIScrollView的使用

 关于无限循环轮播的方法:若是有5张图片就5123451来设置html

6.9 UIScrollView
6.9.1 经常使用属性

//这个属性用来表示UIScrollView内容的尺寸,滚动范围(能滚多远)ios

self.scorllView.contentSize = CGSizeMake(imageW * IMAGE_COUNT, 0);app

 //这个属性用来表示UIScrollView滚动的位置

CGPoint offset = [self.scorllView contentOffset];ide

 //设置UIScrollView滚动的位置

[self.scorllView setContentOffset:CGPointMake(-10, -10)]函数

[self.scorllView setContentOffset:CGPointMake(-10, -10) animated:YES];//动画效果性能

 //设置或取消弹簧效果

self.scorllView.bounces = NO;动画

 //这个属性可以在UIScrollView的4周增长额外的滚动区域

self.scorllView.contentInset = UIEdgeInsetsMake(10, 10, 20, 30);spa

 //设置scrollView是否能够滚动

self.scorllView.scrollEnabled = NO;代理

 //设置是否显示横向和纵向滚动条

self.scorllView.showsHorizontalScrollIndicator = NO;htm

self.scorllView.showsVerticalScrollIndicator = NO;

 //设置分页

self.scrollView.pagingEnabled = YES;

 //实现缩放,需设置初始大小和缩放比例

self.scrollView.contentSize = self.miniView.image.size;

self.scrollView.maximumZoomScale = 2.0;

self.scrollView.minimumZoomScale = 0.2;
(1) ScrollView属性

CGSize  contentSize:设置UIScrollView的滚动范围

CGPoint  contentOffset:UIScrollView当前滚动的位置

UIEdgeInsets  contentInset:增长滚动视图四周的增长滚动范围

 ScrollView属性

BOOL bounces​是否有弹簧效果

BOOL scrollEnabled​是否能滚动

BOOL showsHorizontalScrollIndicator​是否显示水平方向的滚动条

BOOL showsVerticalScrollIndicator​是否显示垂直方向的滚动条

UIScrollViewIndicatorStyle indicatorStyle​设定滚动条的样式

BOOL dragging​是否正在被拖拽

BOOL tracking​按住手指尚未开始拖动的时候值是YES,不然NO

BOOL decelerating​是否正在减速

BOOL zooming​是否正在缩放

 (2) 手势缩放

   [_scrollView setMinimumZoomScale:0.2]; // 指定最小缩放比例

   [_scrollView setMaximumZoomScale:2.0]; // 指定最大缩放比例

   [_scrollView setDelegate:self]; // 设置滚动视图的代理

 <UISCrollViewDelegate> 
 #pragma mark  手势所发代理代理方法

// 缩放中的代理方法

- (void)scrollViewDidZoom:(UIScrollView *)scrollView{

   NSLog(@"缩放中。。。");

}

// 缩放完成的代理方法

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale{

   NSLog(@"缩放完成 %f", scale);

}

// 必定要记住:本代理方法的返回值就是“要缩放的视图对象”

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{

   return _imageView;

}

 (3) 分页效果

要实现分页效果,将滚动视图的pagingEnabled属性设置为YES便可。设置该属性后滚动视图会被分割成多个独立的页面,用户本来的滚动体验会变成了页面切换的效果

 

UIPageControl分页控制控件(页面下面的小点点)

UIPageControl属性:

NSInteger numberOfPages:总页数

NSInteger currentPage:当前的页码

BOOL hidesForSinglePage:当只有一页的时候,是否要隐藏视图

UIColor *currentPageIndicatorTintColor:当前选中页面标示的颜色

UIColor *pageIndicatorTintColor:其余页面标示的颜色

代码式例:

 // 增长分页控件

   UIPageControl *pageControl = [[UIPageControl alloc]init];

   [pageControl setBounds:CGRectMake(0, 0, 150.0, 50.0)];

   [pageControl setCenter:CGPointMake(self.view.bounds.size.width / 2, self.view.bounds.size.height - 100.0)];

   [pageControl setNumberOfPages:2];

   [pageControl setCurrentPage:0]; 

   [pageControl setCurrentPageIndicatorTintColor:[UIColor redColor]]; 

   [pageControl setPageIndicatorTintColor:[UIColor blackColor]];
   [pageControl addTarget:self action:@selector(updatePageChanged:) forControlEvents:UIControlEventValueChanged]; // 小圆点被点击方法
     [self.view addSubview:pageControl];// 添加到视图中,而不是scroller中。
 #pragma mark - 分页控件小圆点的监听方法

- (void)updatePageChanged:(UIPageControl *)pageControl{ 

   CGFloat offsetX = pageControl.currentPage * _scroll.bounds.size.width;

   [_scroll setContentOffset:CGPointMake(offsetX, 0) animated:YES];

}

 #pragma mark - 滚动视图代理方法

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

   NSInteger pageNo = scrollView.contentOffset.x / scrollView.bounds.size.width;   

   [_pager setCurrentPage:pageNo];
}
6.9.2 UIScrollViewDelegate协议方法

//实现viewForZoomingInScrollView方法,返回要缩放的控件实现缩放,scrollview有多个图片时,只能缩放其中一个,返回那个图片就缩放那个图片

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{

   return self.miniView;

}
// 当 offset改变的时候,时时触发

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

 

6.10 UIPageControl

//设置总页数

self.pageControl.numberOfPages = IMAGE_COUNT;

 //设置当前页码
self.pageControl.currentPage = num;
 
 

在使用UIScrollView和它的子类UITableView时,有时须要在不一样操做状态下,作不一样的响应。

如何截获这些状态,如正在滚动,滚动中止等,使用UIScrollViewDelegate_Protocol

 

@interface SampleClass: UITableViewController<UIScrollViewDelegate> {

...

}

...

@end

 

@implement SampleClass

...

#pragma mark -
#pragma mark UIScrollViewDelegate

// 触摸屏幕来滚动画面仍是其余的方法使得画面滚动,皆触发该函数
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    NSLog(@"Scrolling...");
}

// 触摸屏幕并拖拽画面,再松开,最后中止时,触发该函数
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    NSLog(@"scrollViewDidEndDragging  -  End of Scrolling.");
}

// 滚动中止时,触发该函数

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    NSLog(@"scrollViewDidEndDecelerating  -   End of Scrolling.");
}

 

// 调用如下函数,来自动滚动到想要的位置,此过程当中设置有动画效果,中止时,触发该函数

// UIScrollView的setContentOffset:animated: 

// UIScrollView的scrollRectToVisible:animated:

// UITableView的scrollToRowAtIndexPath:atScrollPosition:animated:

// UITableView的selectRowAtIndexPath:animated:scrollPosition:

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
    NSLog(@"scrollViewDidEndScrollingAnimation  -   End of Scrolling.");
}

@end

相关文章
相关标签/搜索