UIScrollView

UIScrollView

UIScrollView全部API学习。

//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的常见属性

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

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

@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(代理)为控制器对象
scrollView.delegate = 控制器;
  • 控制器要遵守UIScrollViewDelegate协议
@interface 控制器 ()  <UIScrollViewDelegate>

@end
  • 控制器要实现UIScrollViewDelegate协议里面的代理方法
#pragma mark - <UIScrollViewDelegate>  代理方法
/**
 *  只要scrollView在滚动,就会调用这个方法(监听scrollView的滚动)
 */
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { NSLog(@"scrollViewDidScroll"); } //开始拖拽 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView; //停止拖拽 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate; 

缩放

  • 设最大、最小缩放比例
_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的使用

  • 开启定时器
@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]; 
  • 关闭定时器
[self.timer invalidate];

转载于:https://www.cnblogs.com/ShaoYinling/p/4603316.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值