ios UIScrollView
用来实现 “滚动”和“缩放”
一、简单使用步骤:
(1)创建UIScrollView;
(2) 添加子控件;
(3)设置滚动区域
注意:不能点击可能出现的情况
设置滚动区域
[scrollView setContentSize:self.btImage.frame.size];
设置是否可以点击
[scrollView setScrollEnabled:YES];
设置是否可以交互
scrollView.userInteractionEnabled=NO;
没有取消autolayout功能,自动布局
三、常见属性
当UIScrollView内部的内容滚动时,相对于UIScrollView左上角的偏移:也可以手动设置
scrollView setContentOffset:<#(CGPoint)#> //不带动画
[scrollView setContentOffset:<#(CGPoint)#> animated:YES];//带动画
设置是否需要弹簧效果:
[scrollView setBounces:NO];
隐藏指示器
scrollView.showsVerticalScrollIndicator=NO;//隐藏垂直 scrollView.showsHorizontalScrollIndicator=NO;//隐藏水平
设置scrollView内边距:相当于给内容加了一个框
[scrollView setContentInset:[UIEdgeInsetsMake(top, left, bottom, right)];
获取控件的Y坐标的最大值:
CGFloat cgFloat= CGRectGetMaxY(self.btImage.frame);
四、代理滑动事件:
1、滚动事件设置
self.scrollView.delegate=self;//设置控制器
@interface ViewController () <UIScrollViewDelegate> //遵守协议
- (void)scrollViewDidScroll:(UIScrollView *)scrollView //滚动过程事件
2、缩放实现
1)设置滚动事件
2)写协议缩放方法
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{ return self.image;//返回需要缩放的按钮 }
3)设置缩放的大小
self.scrollView.minimumZoomScale=2.0;//缩小的比例 self.scrollView.maximumZoomScale=4.0; //放大的比例
五、滚动方法总结
/** 滚动 */ //用户在滚动的时候调用 - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ } //用户在即将开始拖拽调用 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{ } //用户在结束拖拽 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ } /** 缩放 */ //返回要进行缩放的控件,这个方法在控件创建的就会执行 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{ return self.image; } //即将开始缩放的时候调用 - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{ } //正在缩放的时候调用 - (void)scrollViewDidZoom:(UIScrollView *)scrollView{ } //缩放完毕的时候调用 - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{ }
六、实现自动分页
self.scrollView.pagingEnabled=YES;//根据scrollView自身的宽度来分页
七、UIPageControl 指示器
[self.pageControl setNumberOfPages:5];//设置点的总个数; [self.pageControl setCurrentPage:0];//设置当前选中的第几个点 self.pageControl.hidesForSinglePage=YES; //是否隐藏页码指示器 self.pageControl.currentPageIndicatorTintColor=[UIColor redColor];//当前页面指示器颜色 self.pageControl.pageIndicatorTintColor=[UIColor redColor];//其他页码颜色
八、计时器
1、NSTimer(时间间隔比较大) 1秒、几秒
2、CADisplayLink (时间间隔比较小)0.0几秒
//创建计时器 NSTimer *timer= [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(banerImage) userInfo:nil repeats:YES]; //销毁计时器:销毁计时器将不能使用,再次启动需要重新启动 [timer invalidate]; timer=nil; //设置计时器的优先级,获取消息对象 NSRunLoop *runLoop=[NSRunLoop currentRunLoop]; // 改变优先级 NSDefaultRunLoopMode://默认优先级 NSRunLoopCommonModes:指定和控件一样优先级 [runLoop addTimer:timer forMode:NSRunLoopCommonModes];