iOS_UIScrollView基本使用

 

设置可以滚动的范围 contentSize 
self.scrollView.contentSize = XXX.size;
设置内容的偏移量 contentOffset
作用1:控制内容滚动的位置    
作用2:得知内容滚动的位置
self.scrollView.contentOffset = CGPointMake(0, -100);
设置滚动区域四周的滚动范围 contentInset
self.scrollView.contentInset = UIEdgeInsetsMake(10, 10, 10, 10);
指定控件是否只能在一个方向上滚动(默认NO)
self.scrollView.directionalLockEnabled = YES;
是否有弹簧效果
self.scrollView.bounces = NO;
不管有没有设置contentSize,总是有弹簧效果(下拉刷新)
self.scrollView.alwaysBounceHorizontal = YES;
self.scrollView.alwaysBounceVertical = YES;
当值是 YES 会自动滚动到 subview 的边界(默认NO)
self.scrollView.pagingEnabled = YES;
控制控件是否能滚动(默认YES)
self.scrollView.scrollEnabled = NO; 
点击状态栏回到顶部(默认YES)
self.scrollView.scrollsToTop = YES;
是否显示滚动条
水平方向
self.scrollView.showsHorizontalScrollIndicator = NO;
垂直方向
self.scrollView.showsVerticalScrollIndicator = NO;
指定滚动条在scrollerView中的位置
self.scrollView.scrollIndicatorInsets=UIEdgeInsetsMake(64.0, 0.0, 44.0, 0.0);
设置滚动条样式
默认:灰色线包围黑色条
self.scrollView.indicatorStyle = UIScrollViewIndicatorStyleDefault; 

typedef NS_ENUM(NSInteger, UIScrollViewIndicatorStyle) {
    UIScrollViewIndicatorStyleDefault,     // black with white border. good against any background
    UIScrollViewIndicatorStyleBlack,       // black only. smaller. good against a white background
    UIScrollViewIndicatorStyleWhite        // white only. smaller. good against a black background
};
注意点:千万不要通过索引去subviews数组访问scrollView子控件
[self.scrollView.subviews.firstObject removeFromSuperview];
内边距
self.scrollView.contentInset = UIEdgeInsetsMake(100, 0, 50, 0);
//自动调整宽高
self.scrollView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;  
CGFloat decelerationRate    改变scrollerView的减速点位置
BOOL tracking   监控当前目标是否正在被跟踪
BOOL dragging   监控当前目标是否正在被拖拽
BOOL decelerating   监控当前目标是否正在减速
BOOL delaysContentTouches   控制视图是否延时调用开始滚动的方法
BOOL canCancelContentTouches    控制控件是否接触取消touch的事件
设置缩放比例
self.scrollView.maximumZoomScale = 1.0;
self.scrollView.minimumZoomScale = 0.1;

CGFloat zoomScale 设置变化比例
self.scrollView.zoomScale = 0.5;

BOOL bouncesZoom 控制缩放的时候是否会反弹(默认YES)
self.scrollView.bouncesZoom = NO;
BOOL zooming 判断控件的大小是否正在改变
BOOL zoomBouncing 判断是否正在进行缩放反弹

/**
 *  返回需要缩放的子控件(scrollView的子控件)
 */
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    return self.imageView;
}
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{
    NSLog(@"scrollViewWillBeginZooming");
}
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
    NSLog(@"scrollViewDidZoom");
}

UIScrollViewDelegate

//滚动时调用,可以实时监测滚动变化  
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;  
 // any offset changes
  
//实时监测缩放  
- (void)scrollViewDidZoom:(UIScrollView *)scrollView NS_AVAILABLE_IOS(3_2);
 // any zoom scale changes  
  
//开始拖动的时候调用  
// called on start of dragging (may require some time and or distance to move)  
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;  
  
//停止拖动的时候调用(注:停止拖动时,拖动效果会持续一段,慢慢停下)  
// called on finger up if the user dragged. velocity is in points/millisecond. targetContentOffset may be changed to adjust where the scroll view comes to rest  
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0);  
  
//结束拖动时调用  
// called on finger up if the user dragged. decelerate is true if it will continue moving afterwards  
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;  
  
//开始减速的时候调用  
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;   
// called on finger up as we are moving  
  
//结束减速的时候调用  
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;     
 // called when scroll view grinds to a halt  
  
//设置scrollview动画,动画结束后调用  
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;
 // called when setContentOffset/scrollRectVisible:animated: finishes. not called if not animating  

//返回缩放的可以view,如上例UIImageView  
- (nullable UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;    
// return a view that will be scaled. if delegate returns nil, nothing happens  
  
//开始缩放的时候调用  
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view NS_AVAILABLE_IOS(3_2); 
// called before the scroll view begins zooming its content  
  
//结束缩放的时候调用  
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale; 
// scale between minimum and maximum. called after any 'bounce' animations  
  
//是否可以拖动到顶部,yes可以否则不可以  
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;   
// return a yes if you want to scroll to the top. if not defined, assumes YES  
  
//可以拖动到顶部时,拖动结束后调用  
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;     
// called when scrolling animation finished. may be called immediately if already at top  
 

转载于:https://my.oschina.net/u/3756749/blog/1787011

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值