ios scrollwkwebview setbouncess 会引用系统长按事件吗

1080人阅读
最近在项目中遇到一个 需求就是在一个可以左右拨动的页面上,添加一些交互功能,比如说点击某个页面会有文字变化,图片变换,最后有比较特殊的需求是做个像slider功能的可以拖动的按钮,并且有吸附功能,即当滑动停止在两个图标间的时候,可以滑向离自己比较近的图标。
(PS:本人是新手,哈哈,高手就全当路过吧),一看到的时候觉的没什么问题,很简单的不就是一个scrollview+touch 事件就能搞定么,可是做着就出问题了。
发现放在scrollview上的view 都不能响应touch 事件,想了好久不得其解,应该没什么东西覆盖在view 上,怎么点击就是没反应呢?网上转了一圈,真实收获不少,特别是一篇UIScrollerView 原理详解,更使我恍然大悟,书到用时方恨少啊 。
3 UIScrollerView 原理
其实这个原理道理网上已经讲的很明白,我就引用下上面那位高手的原文吧:
UIScrollView的工作原理,当手指touch的时候,UIScrollView会拦截Event,会等待一段时间,在这段时间内,如果没有手指 没有移动,当时间结束时,UIScrollView会发送tracking events到子视图上。在时间结束前,手指发生了移动,那么UIScrollView就会进行移动,从而取笑发送tracking。
自己也总结了下,没上面的这位易于理解。所以就直接引用了,多看几遍发现还真是这么回事。
4 问题的解决思路
一般是两个思路,一个是通过定制一个scrollerview,并重写他的touch 方法。
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event{
if(!self.dragging)
[[selfnextResponder]touchesBegan:toucheswithEvent:event];
[supertouchesBegan:toucheswithEvent:event];
//NSLog(@&MyScrollView touch Began&);
- (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event
if(!self.dragging)
[[selfnextResponder]touchesEnded:toucheswithEvent:event];
[supertouchesEnded:toucheswithEvent:event];
下面这个函数的功能是判断是否可以把touch 事件传递给子视图,即在他上面的视图。当返回是yes 的时候就表示可以,就当点击子视图view 的时候停止响应scroll事件,改而响应子视图的touch 事件,当为no 时则拒绝子视图响应,执行父视图的touch 事件,下面的代码时实现了当子视图时按钮的时候就响应其对应的功能,子很多时候还是很管用的。
- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view
if ([view isKindOfClass:[UIButton class]])
return YES;
return NO;
setDelaysContentTouches
这个函数主要时判断是否延迟执行tracking 一般情况下是yes
即会延迟执行,就是先等待一会儿看scrollview 是否有touch 事件发生,如果没有则转而执行子视图的 的touch 事件。
//yes 则发送一个可以touchesCancelled:withEvent:
然后把这个事件当作一次滚动赖实现
[baseScrollView setCanCancelContentTouches:YES];
//滚动的时候是否可以除边界,即到边界的时候是否可以多看到一点内容
[baseScrollView setBounces:NO];
// 当值是NO 立即调用 touchesShouldBegin:withEvent:inContentView 看是否滚动 scroll
[baseScrollView setDelaysContentTouches:NO];
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:26748次
排名:千里之外
原创:31篇
转载:13篇
(2)(1)(2)(1)(6)(3)(2)(6)(3)(2)(1)(13)(1)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'IOS&scrollview&拦截
UI学习&ScrollView中Touch事件作用子视图是本文要介绍对内容,我们知道当多个视图进行叠加的时候,touch事件是作用到最上面的视图上,但是如果父视图是UIScrollView,如果默认,可能touch子视图会造成UIScrollView的滚动。
UIScrollView滚动的原因,可以看UIScrollView
原理,地址:/bbs/read.php?tid-40965-page-1.html
我在这里简单的描述一下,UIScrollView的工作原理,当手指touch的时候,UIScrollView会拦截Event,会等待一段时间,在这段时间内,如果没有手指没有移动,当时间结束时,UIScrollView会发送tracking
events到子视图上。在时间结束前,手指发生了移动,那么UIScrollView就会进行移动,从而取笑发送tracking。
那么,UIScrollView的子类想要接受touch事件,就是用户点击UIScrollView上的视图时,要先处理视图上的touch,而不发生滚动。这时候就需要UIScrollView的子类重载touchesShouldBegin:withEvent:inContentView:
,从而决定自己是否接受子视图中的touch事件。
上面都是理论的知识,下面看一个简单的例子:
外面红色是一个UIScrollView,黄色是在UIScrollView上添加的UIView。最后的效果是,当在黄色区域内touch时,touch事件会作用到UIView上,当touch红色区域时,整个视图上下滚动。下面是实现的过程。
一、创建工程,然后创建myScrollView,并且myScrollView继承自UIScrollView。
#import&&&/span&UIKit/UIKit.h&&
@interface&myScrollView&:&UIScrollView&{&
具体的实现:
#import&"myScrollView.h"
#import&"MyView.h" &
@implementation&myScrollView
-&(id)initWithFrame:(CGRect)frame&
&&&&self&=&[super&initWithFrame:frame];&
&&&&if&(self)&{&
&&&&&&&&[self&setBackgroundColor:[UIColor&redColor]];&
&&&&&&&&MyView&*myView=[[MyView&alloc]&initWithFrame:CGRectMake(1,&3,&100,&200)];&
&&&&&&&&[self&addSubview:myView];&
&&&&&&&&[myView&release];&
&&&&return&&
-&(void)dealloc&
&&&&[super&dealloc];&
-&(BOOL)touchesShouldBegin:(NSSet&*)touches&withEvent:(UIEvent&*)event&inContentView:(UIView&*)view&
&&&&NSLog(@"用户点击了scroll上的视图%@,是否开始滚动scroll",view);&
&&&&//返回yes&是不滚动&scroll&返回no&是滚动scroll&
&&&&return&YES;&
-&(BOOL)touchesShouldCancelInContentView:(UIView&*)view&
&&&&NSLog(@"用户点击的视图&%@",view);&
&&&&//NO&scroll不可以滚动&YES&scroll可以滚动&
&&&&return&NO;&
重写了- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent
*)event inContentView:(UIView *)view方法和-
(BOOL)touchesShouldCancelInContentView:(UIView *)view方法。
其中(BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent
*)event inContentView:(UIView
*)view,是用户点击黄色区域内,先触发这个方法,当返回YES时,touch事件作用到黄色视图上,当返回no时,红色可以上下滚动。
(BOOL)touchesShouldCancelInContentView:(UIView
*)view是发送tracking前,先作用这个方法。
下面是点击黄的区域的日志:
10:19:42.469 scrollTouch[]
用户点击了scroll上的视图&,是否开始滚动scroll&
10:19:42.658 scrollTouch[] 用户点击的视图 &
二、添加mySrollView到根视图上
-&(void)viewDidLoad&
&&&&[super&viewDidLoad];&
&&&&myScrollView&*view=[[myScrollView&alloc]&initWithFrame:CGRectMake(10,&9,&300,&400)];&
&&&&[view&setUserInteractionEnabled:YES];&
&&&&[view&setScrollEnabled:YES];&
&&&&//NO&发送滚动的通知&但是就算手指移动&scroll也不会动了&YES&发送通知&scroo可以移动&
&&&&[view&setCanCancelContentTouches:YES];&
&&&&[view&setBounces:NO];&
&&&&//&NO&立即通知touchesShouldBegin:withEvent:inContentView&看是否滚动&scroll&
&&&&[view&setDelaysContentTouches:NO];&
&&&&[view&setContentSize:CGSizeMake(300,&900)];&
&&&&[self.view&addSubview:view];&
&&&&[view&release];&
三、MyView视图的实现
#import&"MyView.h" &
@implementation&MyView
-&(id)initWithFrame:(CGRect)frame&
&&&&self&=&[super&initWithFrame:frame];&
&&&&if&(self)&{&
&&&&&&&&[self&setBackgroundColor:[UIColor&yellowColor]];&
&&&&return&&
-&(void)dealloc&
&&&&[super&dealloc];&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。请登录查看
类说明CAScrollView即滚动视图,负责CrossApp的所有滚动操作。可支持裁剪其矩形区域以外的渲染,并让其子数图支持滑动操作与缩放功能。我们在使用CAScrollView时,有时需要对CAScrollView的一个事件进行监听,那么我要就要去实现CAScrollViewDelegate,并重写其函数。CAScrollView 属性&(点击属性名可查看属性介绍)属性说明触摸事件启用在子视图设置容器的内部大小设置是否滚动回弹水平方向回弹竖直方向回弹设置是否显示水平滚动条设置是否显示竖直滚动条最大缩放比例,默认值为1最小缩放比例,默认值为1滑动层缩放比例, 默认值为1滚动视图代表显示滚动指示器头部刷新试图尾部刷新试图是否正在滚动是否在惯性运动中多点触控手势是否正在进行缩放控制CAScrollView 方法&(点击方法名可查看方法介绍)方法说明设置相对于视图顶部的偏移量设置背景图片设置背景颜色添加子视图插入子视图删除所有子视图删除子视图通过标签删除视图通过标签获取视图获得内容偏移设置缩放比例是否到达左边界是否到达右边界是否到达上边界是否到达下边界端头刷新端尾刷新获取相对于视图顶部的偏移量触摸事件开始时的回调函数触摸事件中触点移动时的回调函数触摸事件结束时的回调函数触摸非正常结束时的回调函数。(例如:电话或锁屏)鼠标滚轮创建,并指定其Frame,默认Frame为(0,0,0,0)创建,并设置其Center,默认Center为(0,0,0,0)初始化开始顶端刷新视图开关PC模式CAScrollView即滚动视图,负责CrossApp的所有滚动操作。可支持裁剪其矩形区域以外的渲染,并让其子数图支持滑动操作与缩放功能。我们在使用CAScrollView时,有时需要对CAScrollView的一个事件进行监听,那么我要就要去实现CAScrollViewDelegate,并重写其函数。CAScrollView相对于前面的控件来说,使用比较复杂。但我们清楚了每个函数的意义之后,便可以很清晰的构建出我们所需要的CAScrollView。这里我们就举一个展示文本的一个CAScrollView。首先,我们希望能够监听到CAScrollView的变化,那么我则需要去实现CAScrollViewDelegate,我们修该FirstViewController.h,添加要实现的函数如下:#include &iostream&
#include &CrossApp.h&
USING_NS_CC;
class FirstViewController: public CAViewController ,public CAScrollViewDelegate
FirstViewController();
virtual ~FirstViewController();
//触摸滚动时调用
virtual void scrollViewDidMoved(CAScrollView* view);
//触摸滚动停止时调用
virtual void scrollViewStopMoved(CAScrollView* view);
//滚动时调用(包括惯性滚动时)
virtual void scrollViewDidScroll(CAScrollView* view);
//开始滚动时调用
virtual void scrollViewWillBeginDragging(CAScrollView* view);
//结束滚动时调用
virtual void scrollViewDidEndDragging(CAScrollView* view);
//缩放时调用
virtual void scrollViewDidZoom(CAScrollView* view);
//头部开始刷新时调用
virtual void scrollViewHeaderBeginRefreshing(CAScrollView* view);
//尾巴开始刷新时调用
virtual void scrollViewFooterBeginRefreshing(CAScrollView* view);
protected:
void viewDidLoad();
void viewDidUnload();
然后我们就要在FirstViewController.cpp中去实现这写代理函数:void FirstViewController::viewDidLoad()
// 获得屏幕大小
DSize size
= this-&getView()-&getBounds().
//设置背景颜色为黑色
this-&getView()-&setColor(CAColor_black);
//创建scrollView
CAScrollView* scrollView = CAScrollView::createWithCenter(DRect(size.width*0.5,size.height*0.5 - 270,size.width * 0.5, 100));
//CACScrollView容器的大小
scrollView-&setViewSize(DSize(size.width, 200));
//设置背景颜色
scrollView-&setBackGroundColor(CAColor_orange);
//设置背景图片
//scrollView-&setBackGroundImage(CAImage::create(&r/HelloWorld.png&));
//水平方向是否回弹
scrollView-&setBounceHorizontal(false);
//竖直方向是否回弹
scrollView-&setBounceVertical(true);
//是否滚动回弹,控制竖直和水平方向,默认为ture
//scrollView-&setBounces(false);
scrollView-&setScrollViewDelegate(this);
this-&getView()-&addSubview(scrollView);
//创建label
CALabel* label = CALabel::createWithFrame(DRect(0, 0, size.width * 0.5, 200));
//设置水平剧中
label-&setTextAlignment(CATextAlignmentCenter);
//设置竖直剧中
label-&setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);
//设置字体大小
label-&setFontSize(18 * CROSSAPP_ADPTATION_RATIO);
//设置文本内容
label-&setText(UTF8(&CrossApp具有强大的跨平台性能,并且具有离线能力,可以进行离线操作。对开发者和用户入门要求较低,且功能强大。综合效率高,开发者可以根据实际情况,考虑各方面因素来选择合适的开发解决方案。&));
//设置文本颜色
label-&setColor(CAColor_blue);
//将label添加到scrollView
scrollView-&addSubview(label);
//触摸滚动时调用
void FirstViewController::scrollViewDidMoved(CAScrollView* view)
CCLog(&DidMoved--&&);
//触摸滚动停止时调用
void FirstViewController::scrollViewStopMoved(CAScrollView* view)
CCLog(&StopMoved--&&);
//滚动时调用(包括惯性滚动时)
void FirstViewController::scrollViewDidScroll(CAScrollView* view)
CCLog(&DidMScroll--&&);
//开始滚动时调用
void FirstViewController::scrollViewWillBeginDragging(CAScrollView* view)
CCLog(&BeginDragging--&&);
//结束滚动时调用
void FirstViewController::scrollViewDidEndDragging(CAScrollView* view)
CCLog(&DidEndDragging--&&);
//缩放时调用
void FirstViewController::scrollViewDidZoom(CAScrollView* view)
CCLog(&DidZoom--&&);
//头部开始刷新时调用
void FirstViewController::scrollViewHeaderBeginRefreshing(CAScrollView* view)
CCLog(&HeaderBeginRefreshing--&&);
//尾巴开始刷新时调用
void FirstViewController::scrollViewFooterBeginRefreshing(CAScrollView* view)
CCLog(&FooterBeginRefeshing--&&);
CAScrollView&属性介绍& & &&&&TouchEnabledAtSubviews类型:bool解释:触摸事件启用在子视图。is/set{}。ViewSize类型:DSize解释:设置容器的内部大小。set/get{}。Bounces类型:bool解释:设置是否滚动回弹。is/set{}。BounceHorizontal类型:bool解释:水平方向回弹。is/set{}。BounceVertical类型:bool解释:竖直方向回弹。is/set{}。ShowsHorizontalScrollIndicator类型:bool解释:设置是否显示水平滚动条。is/set{}。ShowsVerticalScrollIndicator类型:bool解释:设置是否显示竖直滚动条。is/set{}。MaximumZoomScale类型:float解释:最大缩放比例,默认值为1。set/get{}。MinimumZoomScale类型:float解释:最小缩放比例,默认值为1。set/get{}。ZoomScale类型:float解释:&滑动层缩放比例, 默认值为1。get{}。ScrollViewDelegate类型:CAScrollViewDelegate*解释:滚动视图代表。set/get{}。ShowsScrollIndicators类型:bool解释:显示滚动指示器。is/set{}。HeaderRefreshView类型:CAPullToRefreshView*解释:头部刷新试图。set/get{}。FooterRefreshView类型:CAPullToRefreshView*解释:尾部刷新试图。set/get{}。Tracking类型:bool解释:查看&ScrollView&是否正在滚动。is{}。&&&&&&&&Zooming类型:bool解释:查看&ScrollView&是否正在进行缩放控制。is{}。Decelerating类型:bool解释:查看&ScrollView&是否在惯性运动中。is{}。MultitouchGesture类型:MultitouchGesture解释:多点触控手势,set/get{}。CAScrollView&方法介绍void&setContentOffset(const DPoint& offset, bool animated);返回值:void参数:类型参数名说明const DPoint&offset偏移量boolanimated是否播放动画解释:设置内容偏移量void&setBackGroundImage(CAImage* image);返回值:void参数:类型参数名说明CAImage*image背景图像解释:设置背景图像void&setBackGroundColor(const CAColor4B &color);返回值:void参数:类型参数名说明const CAColor4B&color背景颜色解释:设置背景颜色virtual void&addSubview(CAView* subview);&返回值:void参数:类型参数名说明CAView*subview子视图解释:添加子视图virtual void&insertSubview(CAView* subview, int z);返回值:void参数:类型参数名说明CAView*subview子视图intz数量解释:插入子视图void&removeAllSubviews();返回值:void参数:解释:删除所有子视图void&removeSubview(CAView* subview); &返回值:void参数:类型参数名说明CAView*subview子视图解释:删除子视图CAView*&getSubviewByTag(int aTag);&返回值:CAView*参数:类型参数名说明intaTag子视图标签解释:通过标签获取子视图void&removeSubviewByTag(int tag);返回值:void参数:类型参数名说明inttag子视图标签解释:通过标签删除子视图CAView*&getSubviewByTag(int aTag);返回值:CAView*&参数:类型参数名说明intaTag子视图标签解释:过标签获取子视图DPoint&getContentOffset();返回值:DPoint参数:解释:获得内容偏移量void&setZoomScale(float zoom);返回值:void参数:类型参数名说明floatzoom缩放比例解释:设置缩放比例virtual bool&isReachBoundaryLeft();返回值:bool参数:解释:是否到达左边界virtual bool&isReachBoundaryRight();返回值:bool参数:解释:是否到达右边界virtual bool&isReachBoundaryUp();返回值:bool参数:解释:是否到达上边界virtual bool&isReachBoundaryDown();返回值:bool参数:解释:是否到达下边界void&endHeaderRefresh();返回值:void参数:解释:端头刷新void&endFooterRefresh();返回值:void参数:解释:端尾刷新DPoint&getContentOffset();返回值:DPoint参数:解释:获取相对于视图顶部的偏移量virtual bool&ccTouchBegan(CATouch *pTouch, CAEvent *pEvent);返回值:virtual bool参数:类型参数名说明CATouch*pTouch触摸传递对象CAEvent*pEven此参数待定解释:触摸事件开始时的回调函数virtual void&ccTouchMoved(CATouch *pTouch, CAEvent *pEvent);返回值:virtual void参数:类型参数名说明CATouch*pTouch触摸传递对象CAEvent*pEven此参数待定解释:触摸事件中触点移动时的回调函数virtual void&ccTouchEnded(CATouch *pTouch, CAEvent *pEvent);返回值:virtual void参数:类型参数名说明CATouch*pTouch触摸传递对象CAEvent*pEven此参数待定解释:触摸事件结束时的回调函数virtual void&ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent);返回值:virtual void参数:类型参数名说明CATouch*pTouch触摸传递对象CAEvent*pEven此参数待定解释:触摸非正常结束时的回调函数。(例如:电话或锁屏)virtual void&mouseScrollWheel(CATouch* pTouch, float off_x, float off_y, CAEvent* pEvent);返回值:virtual void参数:类型参数名说明CATouch*pTouch触摸floatoff_xx坐标偏移量floatoff_yy坐标偏移量CAEvent*pEvent事件解释:鼠标滚轮static CAScrollView*&createWithFrame(const DRect& rect);返回值:static CAScrollView*参数:类型参数名说明const DRect&rect区域大小解释:创建,并指定其Frame,默认Frame为(0,0,0,0)static CAScrollView*&createWithCenter(const DRect& rect);返回值:static CAScrollView*参数:类型参数名说明const DRect&rect中心点的位置及大小解释:创建,并设置其Center,默认Center为(0,0,0,0)virtual bool&init();返回值:virtual bool参数:解释:初始化void&startPullToHeaderRefreshView();返回值:void参数:解释:开始顶端刷新视图virtual void&switchPCMode(bool var);返回值:virtual void参数:类型参数名说明boolvar开关解释:开关PC模式
意见反馈:
联系方式:
广告等垃圾信息
不友善内容
违反法律法规的内容
不宜公开讨论的政治内容iOS开发UI篇—UIScrollView控件介绍 - 文顶顶 - 博客园
最怕你一生碌碌无为 还安慰自己平凡可贵
iOS开发UI篇&UIScrollView控件介绍
一、知识点简单介绍
1.UIScrollView控件是什么?
(1)移动设备的屏幕?大?小是极其有限的,因此直接展?示在?用户眼前的内容也相当有限
(2)当展?示的内容较多,超出?一个屏幕时,?用户可通过滚动?手势来查看屏幕以外的内容
(3)普通的UIView不具备滚动功能,不能显?示过多的内容
(4)UIScrollView是一个能够滚动的视图控件,可以?用来展?示?大量的内容,并且可以通过滚 动查看所有的内容
&(5)& 举例:手机上的&设置&、其他?示例程序&
2.UIScrollView的简单使用
(1)将需要展?的内容添加到UIScrollView中
(2)设置UIScrollView的contentSize属性,告诉UIScrollView所有内容的尺?寸,也就是告诉 它滚动的范围(能滚多远,滚到哪?里是尽头)&
(1)常用属性:
1)@property(nonatomic)CGPointcontentO 这个属性?用来表?示UIScrollView滚动的位置
2)@property(nonatomic)CGSizecontentS这个属性?用来表?示UIScrollView内容的尺?寸,滚动范围(能滚多远)
3)@property(nonatomic)UIEdgeInsetscontentI 这个属性能够在UIScrollView的4周增加额外的滚动区域&
(2)其他属性:
1)@property(nonatomic) BOOL
&设置UIScrollView是否需要弹簧效果&
2)@property(nonatomic,getter=isScrollEnabled)BOOLscrollE 设置UIScrollView是否能滚动&
3)@property(nonatomic) BOOL showsHorizontalScrollI 是否显?示?水平滚动条&
4)@property(nonatomic) BOOL showsVerticalScrollI 是否显?示垂直滚动条&
& 如果UIScrollView?无法滚动,可能是以下原因:
(1)没有设置contentSize
(2) scrollEnabled = NO
(3)&没有接收到触摸事件:userInteractionEnabled = NO
(4)没有取消autolayout功能(要想scrollView滚动,必须取消autolayout)&
二、关于UIScrollView常见属性的一些说明
1.属性使用的代码示例
1 #import "MJViewController.h"
3 @interface MJViewController ()
//在私有扩展中创建一个属性
UIScrollView *_scrollV
10 @implementation MJViewController
12 - (void)viewDidLoad
[super viewDidLoad];
// 1.创建UIScrollView
UIScrollView *scrollView = [[UIScrollView alloc] init];
scrollView.frame = CGRectMake(0, 0, 250, 250); // frame中的size指UIScrollView的可视范围
scrollView.backgroundColor = [UIColor grayColor];
[self.view addSubview:scrollView];
// 2.创建UIImageView(图片)
UIImageView *imageView = [[UIImageView alloc] init];
imageView.image = [UIImage imageNamed:@"big.jpg"];
CGFloat imgW = imageView.image.size. // 图片的宽度
CGFloat imgH = imageView.image.size. // 图片的高度
imageView.frame = CGRectMake(0, 0, imgW, imgH);
[scrollView addSubview:imageView];
// 3.设置scrollView的属性
// 设置UIScrollView的滚动范围(内容大小)
scrollView.contentSize = imageView.image.
// 隐藏水平滚动条
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.showsVerticalScrollIndicator = NO;
// 用来记录scrollview滚动的位置
scrollView.contentOffset = ;
// 去掉弹簧效果
scrollView.bounces = NO;
// 增加额外的滚动区域(逆时针,上、左、下、右)
scrollView.contentInset = UIEdgeInsetsMake(20, 20, 20, 20);
_scrollView = scrollV
52 - (IBAction)down:(UIButton *)sender {
[UIView animateWithDuration:1.0 animations:^{
//三个步骤
CGPoint offset = _scrollView.contentO
offset.y += 150;
_scrollView.contentOffset =
//_scrollView.contentOffset = CGPointMake(0, 0);
2.几个属性坐标示意图
3.重要说明
(1)UIScrollView的frame与contentsize属性的区分:UIScrollView的frame指的是这个scrollview的可视范围(可看见的区域),contentsize是其滚动范围。
(2)contentinset(不带*号的一般不是结构体就是枚举),为UIScrollView增加额外的滚动区域。(上,左,下,右)逆时针。contentinset可以使用代码或者是视图控制器进行设置,但两者有区别(注意区分)。
(3)contentsize属性只能使用代码设置。
(4)contentoffset是个CGpoint类型的结构体,用来记录ScrollView的滚动位置,即记录着&框&跑到了哪里。知道了这个属性,就知道了其位置,可以通过设置这个属性来控制这个&框&的移动。
(5)不允许直接修改某个对象内部结构体属性的成员,三个步骤(先拿到值,修改之,再把修改后的值赋回去)。
(6)增加了额外区域后,contentoffset的原点在哪里?
三、有助于理解的几个截图
随笔 - 179
评论 - 1481

我要回帖

更多关于 recyclerview长按删除 的文章

 

随机推荐