iOS之UIScrollView常用属性和用法总结

1.如果UIScrollView无法滚动,可能是以下原因:

1)没有设置contentSize

2)scrollEnabled = NO

3)没有接收到触摸事件:userInteractionEnabled = NO等
 
 
2.UIScrollView的常见属性:
@property(nonatomic) CGPoint contentOffset;
//这个属性用来表示UIScrollView滚动的位置(其实就是内容左上角与scrollView左上角的间距值)

@property(nonatomic) CGSize contentSize;

//这个属性用来表示UIScrollView内容的尺寸,滚动范围(能滚多远)
 
@property(nonatomic) UIEdgeInsets contentInset;
//这个属性能够在UIScrollView的4周增加额外的滚动区域,一般用来避免scrollView的内容被其他控件挡住
 
3.UIScrollView的其他属性:
@property(nonatomic) BOOL bounces;
//设置UIScrollView是否需要弹簧效果

@property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled;

//设置UIScrollView是否能滚动
 
@property(nonatomic) BOOL showsHorizontalScrollIndicator;
//是否显示水平滚动条
 
@property(nonatomic) BOOL showsVerticalScrollIndicator;
//是否显示垂直滚动条
 
4.UIScrollViewDelegate协议

// 用户开始拖拽时调用

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;

// 滚动到某个位置时调用

- (void)scrollViewDidScroll:(UIScrollView *)scrollView;

// 用户结束拖拽时调用

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;

 

5.缩放实现步骤

1.设置UIScrollView的id<UISCrollViewDelegate> delegate代理对象
2.设置minimumZoomScale :缩小的最小比例
3.设置maximumZoomScale :放大的最大比例
4.让代理对象实现下面的方法,返回需要缩放的视图控件

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

6.跟缩放相关的其他代理方法
缩放完毕的时候调用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view 
 
正在缩放的时候调用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
 

7.分页

只要将UIScrollView的pageEnabled属性设置为YES,UIScrollView会被分割成多个独立页面,里面的内容就能进行分页展示
 
一般会配合UIPageControl增强分页效果,UIPageControl常用属性如下
//一共有多少页

@property(nonatomic) NSInteger numberOfPages;

//当前显示的页码

@property(nonatomic) NSInteger currentPage;

//只有一页时,是否需要隐藏页码指示器

@property(nonatomic) BOOL hidesForSinglePage;

//其他页码指示器的颜色

@property(nonatomic,retain) UIColor *pageIndicatorTintColor;

//当前页码指示器的颜色

@property(nonatomic,retain) UIColor *currentPageIndicatorTintColor;

 

8.定时器NSTimer

NSTimer叫做“定时器”,它的作用如下
在指定的时间执行指定的任务
每隔一段时间执行指定的任务
 
调用下面的方法就会开启一个定时任务

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti   target:(id)aTarget

  selector:(SEL)aSelector

  userInfo:(id)userInfo

  repeats:(BOOL)yesOrNo;

每隔ti秒,调用一次aTarget的aSelector方法,yesOrNo决定了是否重复执行这个任务 

通过invalidate方法可以停止定时器的工作,一旦定时器被停止了,就不能再次执行任务。只能再创建一个新的定时器才能执行新的任务

- (void)invalidate;

 

9.解决定时器在主线程不工作的问题

NSTimer *timer = [NSTimer timerWithTimeInterval:2 target:self selector:@selector(next) userInfo:nil repeats:YES];

[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

转载于:https://www.cnblogs.com/chixuedong/p/5244959.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值