前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UIScrollView

UIScrollView

作者头像
用户1941540
发布2018-05-11 13:50:48
1.8K0
发布2018-05-11 13:50:48
举报
文章被收录于专栏:ShaoYLShaoYL

UIScrollView

UIScrollView全部API学习。

代码语言:javascript
复制
//1.设定滚定条的样式

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
纯白边框

};

//2.在UIScrollView中键盘的消失方式

typedef
NS_ENUM(NSInteger, UIScrollViewKeyboardDismissMode) {

UIScrollViewKeyboardDismissModeNone,
默认样式

UIScrollViewKeyboardDismissModeOnDrag,
// dismisses the keyboard when a drag begins
设定键盘的消失方式为拖拉页面

UIScrollViewKeyboardDismissModeInteractive,
// the keyboard follows the dragging touch off screen, and may be pulled upward again to cancel the dismiss
设定键盘消失方式为拖拉并点击页面

} NS_ENUM_AVAILABLE_IOS(7_0);

//3.这个参数可以设置减速的速率

UIKIT_EXTERN
const CGFloat UIScrollViewDecelerationRateNormal
NS_AVAILABLE_IOS(3_0);

//4.这个参数可以设置减速的速率

UIKIT_EXTERN
const CGFloat UIScrollViewDecelerationRateFast
NS_AVAILABLE_IOS(3_0);

//5.从内容视图的原点偏移的一个点

@property(nonatomic)
CGPoint contentOffset;
//6.内容视图的大小

@property(nonatomic)
CGSize contentSize;

//7.内容视图的距离,是从封闭的滚动视图插图

@property(nonatomic)
UIEdgeInsets contentInset;
around content

//8.滚动视图的代理

@property(nonatomic,assign)
id<UIScrollViewDelegate> delegate;

//9.一个bool值,用来决定是否在某一特定方向禁用滚动

@property(nonatomic,getter=isDirectionalLockEnabled)
BOOL directionalLockEnabled;

//10.控制滚动视图是否反弹过去内容的边缘,然后再返回一个布尔值

@property(nonatomic)
BOOL bounces;

//11.如果这个属性被设置成YES而且bounces的值是YES,垂直拖动是允许的内容,即使小鱼滚动视图的边界,默认是NO

@property(nonatomic)
BOOL alwaysBounceVertical;

//12.一个布尔值,决定是否反弹总是发生在垂直滚动到达结束内容,默认值是NO

@property(nonatomic)
BOOL alwaysBounceHorizontal;

//13.一个布尔值
决定是否弃用分页滚动视图

@property(nonatomic,getter=isPagingEnabled)
BOOL pagingEnabled;

//14.决定是否弃用滚动

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

//15.控制水平滚动指标是否可见的

@property(nonatomic)
BOOL showsHorizontalScrollIndicator;

//16.控制垂直滚动指标是否是可见的

@property(nonatomic)
BOOL showsVerticalScrollIndicator;

//17.滚动指标点到滚动视图的边缘的距离

@property(nonatomic)
UIEdgeInsets scrollIndicatorInsets;
//18.指示器的风格设置

@property(nonatomic)
UIScrollViewIndicatorStyle indicatorStyle;

//19.默认减速率

@property(nonatomic)
CGFloat decelerationRate
NS_AVAILABLE_IOS(3_0);

//20.设置从内容原点偏移到指定点的方法

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;
//21.滚动一个特定区域的内容以便它在接受是可见的

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated;
//22.暂时显示滚动指标

- (void)flashScrollIndicators;

//23.返回判断是否用户碰触内容触发滚动(只读)

@property(nonatomic,readonly,getter=isTracking)
BOOL tracking;

//24.一个布尔值
知识用户是否已经开始滚动内容

@property(nonatomic,readonly,getter=isDragging)
BOOL dragging;

//25.返回的内容是否在滚动视图后,用户接触他们的手指(只读)

@property(nonatomic,readonly,getter=isDecelerating)
BOOL decelerating;

//26.一个布尔值,决定是否推迟滚动视图触摸手势的处理

@property(nonatomic)
BOOL delaysContentTouches;

//27.如果这个值设置为YES,那么当你在UIScrollView上面放置任何子视图的时候,当你在子视图上移动的时候,UIScrollView会给子视图发送touchCancel消息,而如果该属性设置为NO,ScollView本身不处理这个消息,全部交给子视图处理

@property(nonatomic)
BOOL canCancelContentTouches;

//28.自定义默认行为,当手指触摸在显示的内容由子类重写

- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView
*)view;

//29.它开始发送跟踪邮件的内容视图后动视图调用此方法。如果它从这种方法受到NO便停止拖动和转发触摸时间的内容子视图。

- (BOOL)touchesShouldCancelInContentView:(UIView *)view;

//30.浮点值
指定可应用于滚动视图的内容的最低比例因子

@property(nonatomic)
CGFloat minimumZoomScale;

//31.一个浮点值指定可用于滚动视图的内容的最大规模的因素

@property(nonatomic)
CGFloat maximumZoomScale;

//32.一个浮点值
指定目前用于滚动视图的内容的比例因子

@property(nonatomic)
CGFloat zoomScale
NS_AVAILABLE_IOS(3_0); //33.一个浮点数指定当前的缩放比例

- (void)setZoomScale:(CGFloat)scale animated:(BOOL)animated
NS_AVAILABLE_IOS(3_0);

//34.缩小到特定区域的内容,所以它是在接收器中可见

- (void)zoomToRect:(CGRect)rect animated:(BOOL)animated
NS_AVAILABLE_IOS(3_0);

//35.一个布尔值,决定当当缩放超过上限或是下限时是否滚动视图推动内容缩放

@property(nonatomic)
BOOL bouncesZoom;

//36.一个布尔值
指示内容是否认为正在方法或者缩小(只读)

@property(nonatomic,readonly,getter=isZooming)
BOOL zooming;

//37.一个布尔值
指示缩放已超过指定的接受范围

@property(nonatomic,readonly,getter=isZoomBouncing)
BOOL zoomBouncing;

//38.一个布尔值
控制是否滚动到顶部的姿态是有效地

@property(nonatomic)
BOOL scrollsToTop;

//39.拖动手势(只读)

@property(nonatomic,
readonly) UIPanGestureRecognizer *panGestureRecognizer
NS_AVAILABLE_IOS(5_0);

//40.向里向外捏用于缩放

@property(nonatomic,
readonly) UIPinchGestureRecognizer *pinchGestureRecognizer
NS_AVAILABLE_IOS(5_0);

//41.设置见哦按的小事样式

@property(nonatomic)
UIScrollViewKeyboardDismissMode keyboardDismissMode
NS_AVAILABLE_IOS(7_0);

@end

@protocol UIScrollViewDelegate<NSObject>

@optional

//42.scrollView正在滚动的时候调用

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

//43.scrollView正在被拖动的时候调用

- (void)scrollViewDidZoom:(UIScrollView *)scrollView
NS_AVAILABLE_IOS(3_2);

//44. scrollView开始拖拽的时候调用

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

//45. scrollView将要结束拖拽的时候调用

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity
targetContentOffset:(inout
CGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0);

//46. scrollView完成拖拽的时候调用

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

//47. scrollView将开始降速的时候调用

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

//48. scrollView在减速停止了时候执行,手触摸时候执行

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

//49. 滚动动画停止时执行代码改变时触发,也就是setContentOffset改变的时候

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

//50.返回一个放大或者缩小的视图

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

//51.开始放大或者缩小时候调用

- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView
*)view NS_AVAILABLE_IOS(3_2);

//52.缩放结束时候调用

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView
*)view atScale:(CGFloat)scale;

//53.是否支持滚动至顶部

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;

//54.滚动顶部时候调用该方法

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

@end

UIScrollView的常见属性

代码语言:javascript
复制
@property(nonatomic) CGPoint contentOffset;
这个属性用来表示UIScrollView滚动的位置
(其实就是内容左上角与scrollView左上角的间距值,初始位置)

@property(nonatomic) CGSize contentSize;
这个属性用来表示UIScrollView内容的尺寸,滚动范围(能滚多远)

@property(nonatomic) UIEdgeInsets contentInset;
这个属性能够在UIScrollView的4周增加额外的滚动区域,一般用来避免scrollView的内容被其他控件挡住

代码语言:javascript
复制
@property(nonatomic) BOOL bounces;
设置UIScrollView是否需要弹簧效果

@property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled;
设置UIScrollView是否能滚动

@property(nonatomic) BOOL showsHorizontalScrollIndicator;
是否显示水平滚动条

@property(nonatomic) BOOL showsVerticalScrollIndicator;
是否显示垂直滚动条

//分页。默认是 _scrollView 的宽度
_scrollView.pagingEnabled = YES;

UIScrollView不能滚动的条件

  • contentOffset属性
  • AntoLayout 取消
  • scrollEnabled 属性 = YES;
  • userInteractionEnabled 属性 = YES;

监听scrollView各种行为的3大步骤(比如让控制器监听scrollView的行为)

  • 设置scrollView的delegate(代理)为控制器对象
代码语言:javascript
复制
scrollView.delegate = 控制器;
  • 控制器要遵守UIScrollViewDelegate协议
代码语言:javascript
复制
@interface 控制器 ()  <UIScrollViewDelegate>

@end
  • 控制器要实现UIScrollViewDelegate协议里面的代理方法
代码语言:javascript
复制
#pragma mark - <UIScrollViewDelegate>  代理方法
/**
 *  只要scrollView在滚动,就会调用这个方法(监听scrollView的滚动)
 */
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewDidScroll");
}

//开始拖拽
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;

//停止拖拽
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;

缩放

  • 设最大、最小缩放比例
代码语言:javascript
复制
_scrollView.minimumZoomScale = 0.3;
_scrollView.maximumZoomScale = 2.0;

//拖拽调用得方法(返回的是需要进行缩放的控件)
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return _beautifulView;
}

代理使用的一般规律

  • 作用:用来监听控件的某些行为
  • 代理:是控制器对象
  • 代理:是id类型,并且是弱指针
  • 代理协议的格式:控件类名Delegate,比如UIScrollViewDelegate、UITextFieldDelegate
  • 代理方法:方法名一般是控件名开头,比如UIScrollView的代理方法一般以scrollView开头

如何监听控件的行为

  • 通过addTarget:
    • 只有继承自UIControl的控件,才有这个功能
    • UIControlEventTouchUpInside : 点击事件(UIButton)
    • UIControlEventValueChanged : 值改变事件(UISwitch、UISegmentControl、UISlider)
    • UIControlEventEditingChanged : 文字改变事件(UITextField)
  • 通过delegate
    • 只有拥有delegate属性的控件,才有这个功能

NSTimer的使用

  • 开启定时器
代码语言:javascript
复制
@property (nonatomic, weak) NSTimer *timer;

// 返回一个自动开始执行任务的定时器
self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextPage:) userInfo:@"123" repeats:YES];

// 修改NSTimer在NSRunLoop中的模式:NSRunLoopCommonModes
// 主线程不管在处理什么操作,都会抽时间处理NSTimer
[[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
  • 关闭定时器
代码语言:javascript
复制
[self.timer invalidate];
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-06-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • UIScrollView
    • UIScrollView全部API学习。
      • UIScrollView的常见属性
        • UIScrollView不能滚动的条件
        • 监听scrollView各种行为的3大步骤(比如让控制器监听scrollView的行为)
          • 缩放
          • 代理使用的一般规律
          • 如何监听控件的行为
          • NSTimer的使用
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档