ios之UIScrollerView滚动视图总结

UIScrollView 类负责所有基于 UIKit 的滚动操作。

一、创建

CGRect bounds = [ [ UIScreen mainScreen ] applicationFrame ] ;
UIScrollView* scrollView = [ [UIScrollView alloc ] initWithFrame:bounds ]; 

当你创建完滚动视图后,你可以将另一个视图的内容粘合到滚动视图的空白页上。这回创建一个滚动的内容窗口:

[ scrollView addSubview:myView]; 

你必须给出内容的实际大小,这样滚动视图才知道滚动的范围:

scrollView.contentSize = myView.frame.size; 

要开启缩放功能需要调整视图的两个属性,分别是maxinumZoomScale 和 mininumZoomScale 。这样就可以允许用户使用捏合手势调整内容大小:

scrollView.maxinumZoomScale = 2.0;//允许放大2倍
scrollView.mininumZoomScale = 0.5;//允许放大到0.5倍 

要打开缩放功能,你还需要增加一个UIScrollViewDelegate 代理,通过一个名为 viewForZoomingScrollView
的方法做出响应。这个方法会返回进行缩放时所使用的 UIView 对象:

scrollView.delegate = self;
- (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView{
 retutn myView;
}

Tips:对于大规模数据,你可能会在最初使用一个低于实际大小(1.0)的缩放比例,让用户可以平滑地进行放大。

二、属性

除了上面用到的缩放属性外,滚动视图还有会让你多其他属性,可以对现实内容的行为进行微调。你可以对 UIScrollView 类进行多方位定制。下面这些属性是最常用的。

1.indicatorStyle

指定你希望使用的滚动条指示器的类型。默认行为是在白边界上绘制黑色的滚动条,这在大多数背景下都适用。可用风格如下:

  • UIScrollViewIndicatorStyleDefault
  • UIScrollViewIndicatorStyleBlack
  • UIScrollViewIndicatorStyleWhite

2.contentOffset

一个CGPoint结构,其中包含有要显示内容相对于窗口左上角的偏移量。默认是从0×0开始的,但是你也可以将显示内容放在其他位置。

3.directionalLockEnabled

默认行为是允许用户同时进行横向和纵向的滚动。将这个属性设置为YES会导致将用户的滚动行为锁定成只允许横向或纵向进行,具体方向由初始姿态决定。

4.bounces

当用户抵达滚动区域边缘时,这个功能允许用户稍微拖动到边界外一点。当用户松开手指后,这个区域会像个橡皮筋一样,弹回到原位,给用户一个可见的提示,表示他已经到达了文档开始或结束位置。如果不想让用户的滚动范围能够超出可见内容,可以将这个属性设置为NO。

5.bouncesZoom

类似于bounces 选项,这个方法可以令用户的缩放操作超出最大或最小缩放级别,然后弹回到范围以内。如果你不想让用户能够超出你指定的范围进行缩放,将这个属性设置为NO。

6.pagingEnabled

当开启了分页功能时,滚动视图被分割成多个独立区段,二用户的滚动体验则变成了页面翻转,你可以用这个属性来进行页面翻转。

三、委托方法

可以赋予滚动视图一个委托,下列委托方法会在特定时刻收到通知。

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

//会在视图滚动时收到通知。包括一个指向被滚动视图的指针,从中可以读取contentOffset属性以确定其滚动到的位置。
-(void)scrollViewWillBeginDragging:(UISCrollView*)scrollView;
//当用户首次在某个方向上进行拖动时得到通知。这个方法会得到被作为参数传递的滚动视图指针,也同样可以从中读取 contentOffset 属性。
-(void)scrollViewDidEndDragging:(UIScrollView*)scrollView willDecelerate:(BOOL)decelerate;
//当用户抬起拖动到手指时得到通知。还会得到一个布尔值,知名报告滚动视图最后位置之前,是否需要减速。 
-(void)scrollViewWillBeginDecelerate:(UIScrollView*)scrollView;
//当用户抬起手指而视图需要继续移动时,会收到通知。这个方法可以用来读取 contentOffset属性,从而判断出当用户抬起手指钱最后一次滚动到的位置,虽然这个位置并不会使滚动条的最终停止位置。
-(void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView;
//当上面提到的减速完毕、滚动视图停止时得到通知。收到这个通知的时刻,滚动视图的contentOffset属性会反映出滚动条最终停止的位置。 
-(void)scrollViewDidEndZooming:(UIScrollview*)scrollView withView:(UIView*)view atScale:(float)scale;
//当用户对内容进行缩放时,会收到通知。缩放比例表示为一个浮点值,会作为参数传递进来。 
-(BOOL)scrollViewShouldScrollToTop:(UIScrollView*)scrollView;
-(void)scrollViewDidScrollToTop:(UIScrollView*)scrollView;
//当用户点出iPhone状态条时,滚动视图委托可以决定视图是否滚动回到开头。

OK,都总结完了,后面会写一个页面翻转的例子敬请关注。

属性和作用

  • CGPoint contentOffSet 监控目前滚动的位置
  • CGSize contentSize 滚动范围的大小
  • UIEdgeInsets contentInset 视图在scrollView中的位置
  • id<UIScrollerViewDelegate>
  • delegate 设置协议
  • BOOL directionalLockEnabled 指定控件是否只能在一个方向上滚动
  • BOOL bounces 控制控件遇到边框是否反弹
  • BOOL alwaysBounceVertical 控制垂直方向遇到边框是否反弹
  • BOOL alwaysBounceHorizontal 控制水平方向遇到边框是否反弹
  • BOOL pagingEnabled 控制控件是否整页翻动
  • BOOL scrollEnabled 控制控件是否能滚动
  • BOOL showsHorizontalScrollIndicator 控制是否显示水平方向的滚动条
  • BOOL showsVerticalScrollIndicator 控制是否显示垂直方向的滚动条
  • UIEdgeInsets scrollIndicatorInsets 指定滚动条在scrollerView中的位置
  • UIScrollViewIndicatorStyle indicatorStyle 设定滚动条的样式
  • float decelerationRate 改变scrollerView的减速点位置
  • BOOL tracking 监控当前目标是否正在被跟踪
  • BOOL dragging 监控当前目标是否正在被拖拽
  • BOOL decelerating 监控当前目标是否正在减速
  • BOOL delaysContentTouches 控制视图是否延时调用开始滚动的方法
  • BOOL canCancelContentTouches 控制控件是否接触取消touch的事件
  • float minimumZoomScale 缩小的最小比例
  • float maximumZoomScale 放大的最大比例
  • float zoomScale 设置变化比例
  • BOOL bouncesZoom 控制缩放的时候是否会反弹
  • BOOL zooming 判断控件的大小是否正在改变
  • BOOL zoomBouncing 判断是否正在进行缩放反弹
  • BOOL scrollsToTop 控制控件滚动到顶部

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • iOS中UIScrollerView的用法及基于AotoLayout的控件悬停

    UIScrollView为了显示多于一个屏幕的内容或者超过你能放在内存中的内容.Scroll View为你处理缩小放大手势,UIScrollView实现了这些手势,并且替你处理对于它们的探测和回应.其中需要注意的子类是UITableView以及UITextView(用来显示大量的文字).还有一个UIWebView,尽管那不是UIScrollView的直接子类,它适用UIScrollView去显示网页内容contentsize是内容的宽和高,contentsize.width是内容的宽度,cont

  • ios之UIScrollerView滚动视图总结

    UIScrollView 类负责所有基于 UIKit 的滚动操作. 一.创建 CGRect bounds = [ [ UIScreen mainScreen ] applicationFrame ] ; UIScrollView* scrollView = [ [UIScrollView alloc ] initWithFrame:bounds ]; 当你创建完滚动视图后,你可以将另一个视图的内容粘合到滚动视图的空白页上.这回创建一个滚动的内容窗口: [ scrollView addSubvie

  • iOS UIScrollView滚动视图/无限循环滚动/自动滚动的实例代码

    我们都知道UIScrollView有一种很流畅的切换效果,结合UIPageControl的辅助展示效果,就可以完成一个很不错的产品介绍功能页面.下面给大家分享iOS UIScrollView滚动视图/无限循环滚动/自动滚动功能,具体代码如下所示: <UIScrollViewDelegate> #define WIDTH [[UIScreen mainScreen] bounds].size.width #define HEIGHT [[UIScreen mainScreen] bounds].

  • 详解iOS 滚动视图的复用问题解决方案

    LazyScroll是什么 LazyScrollView 继承自ScrollView,目标是解决异构(与TableView的同构对比)滚动视图的复用回收问题.它可以支持跨View层的复用,用易用方式来生成一个高性能的滚动视图. 为什么要用LazyScrollView 我们在做首页的时候,往往展示的东西会很多,随着View数量逐渐膨胀,没有一套复用回收机制的ScrollView已经影响到性能了,迫切需要处理对ScrollView中View的复用和回收.使用TableView只能用来解决同类Cell

  • IOS中UITableView滚动到指定位置

    方法很简单: - (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated 有些需要注意的地方: 如果在reloadData后需要立即获取tableview的cell.高度,或者需要滚动tableview,那么,直接在reloadData后执行代码是有可能出问题的. reloadDa

  • iOS实现循环滚动公告栏

    本文实例为大家分享了iOS实现循环滚动公告栏的具体代码,供大家参考,具体内容如下 封装了一个继承于UIView的类,如下: #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @interface XtayNoticeScrollView : UIView - (instancetype)initWithFrame:(CGRect)frame titleArray:(NSArray<NSString *> *)titleArray; -

  • IOS开发之为视图绘制单(多)个圆角实例代码

    IOS开发之为视图绘制单(多)个圆角实例代码 前言: 为视图绘制圆角,圆角可以选左上角.左下角.右下角.右上角.全部圆角 //Core Raduias UIView *actionView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)]; UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:actionView.bounds byRoundingCo

  • IOS 的弹性滚动解决方案

    所谓弹性滚动就是指在翻动长页面手指离开时,由慢到块,由快到慢的过度. 安卓平台上的大多数浏览器都默认了该行为 ios当前还只对<body>下的 overflow 默认产生弹性滚动效果 前一阵子做了一个手机官网,用到了 <div> 中的 overflow,再调试 ios 中遇到了弹性滚动的问题: ios 下 webkit 弹性滚动 css 指令 -webkit-overflow-scrolling: touch; 该指令再切换同样需要做滚动处理的 div 是会遇到一下情况 1. 伴随

  • iOS中模态Model视图跳转和Push视图跳转的需求实现方法

    本文给大家分享下模态Model视图跳转和Push视图跳转的需求实现. 开前自打小广告:一键合成APP引导页,包含不同状态下的引导页操作方式,同时支持动态图片引导页和静态图片引导页以及视频引导页;GitHub地址: https://github.com/dingding3w/DHGuidePageHUD (多多Star,多多支持

  • 微信小程序之滚动视图容器的实现方法

    微信小程序之滚动视图容器的实现方法 直接上两种方案代码以及效果图: 方案1 这种方案是直接使用view,并设置overflow: scroll wxml: <view class="container"> <view class="content" wx:for="{{11}}" wx:key="item"> {{item}} </view> </view> wxss: .con

  • iOS自定义时间滚动选择控件

    本文实例为大家分享了iOS自定义时间滚动选择控件的具体代码,供大家参考,具体内容如下 1.先上自定义的控件: /** * 滚轮选择器 * author LH * data 2016/8/20 17:26 */ public class WheelView extends View { public static final String TAG = "WheelView"; /** * 自动回滚到中间的速度 */ public static final float SPEED = 2;

随机推荐

其他