ios uiscrollview哪个属性有ios bool 默认值值

下次自动登录
现在的位置:
& 综合 & 正文
IOS笔记——UIScrollView属性介绍
UIScrollView在游戏项目中用的是很多的,但是具体有哪些属性呢,在这里我也做一个总结
UIScrollView *scr = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];//初始化一个scr
scr.contentSize = CGSizeMake(self.view.frame.size.width * 2, self.view.frame.size.height *2);//设置scr可以滑动的区域
默认为0 ,也就是没有可以滚动区域
//下面的时一些属性
scr.contentOffset = CGPointMake(1024, 0);
//最开始显示Scrollview的时候,让scrollview那一块内容出来。具体的可以参照http://blog.csdn.net/kylinbl/article/details/7043936
scr.contentInset = UIEdgeInsetsMake(100, 100, 100, 100);
//刚加载的时候,显示的是哪一块内容
scr.showsHorizontalScrollIndicator = YES;
//是否显示水平方向的滚动条
默认为 yes
scr.showsVerticalScrollIndicator
//是否显示垂直方向滚动条
[scr setPagingEnabled:YES];
//滚动时是否直接滚动一个scr大小的距离
scr.scrollEnabled = YES;
//是否让scr可以滚动
默认为 yes
scr.bounces = YES;
//是否划到边界的时候有反弹效果,
scr.bouncesZoom = YES;
//有没有反弹效果,用在缩放上,在放大或缩小到最值时,是否与反弹效果
scr.maximumZoomScale = 2.0f;
//缩放的时候最大值
scr.minimumZoomScale = 1.0f;
//缩放的最小值
scr.clipsToBounds = NO;
//超出范围的时候是否裁剪
scr.directionalLockEnabled = YES;
//默认为no 可以随手势滚动,如果为yes 假如一开始是垂直或者是水平运动,就会锁定另外一个方向的滚动, 假如一开始是对角方向滚动,则不会禁止某个方向
scr.indicatorStyle = UIScrollViewIndicatorStyleW
//滚动涛的样式 只有三种 white
black 和 默认(Default)
scr setScrollIndicatorInsets:UIEdgeInsetsMake(&#CGFloat top#&, &#CGFloat left#&, &#CGFloat bottom#&, &#CGFloat right#&)
//设置滚动条的位置
scr.useInteractionEnable = YES;
//视图对触摸事件是否需要作处回应
如果设置为NO,可以阻止视图接收和分发触摸事件
整体属性介绍 可参照.cn/s/blog_01441g.html
额外介绍一些Scrollview的东西,scrollview的属性实在是太强大了,点击按钮跳转scrollview的另外一屏的时候,有动画效果的
mainScr setContentOffset:&#(CGPoint)#& animated:&#(BOOL)#&
属性不定时更新····
scrollView.userInteractionEnabled = YES;
//视图对触摸事件是否需要作处回应可以通过设置视图的userInteractionEnabled属性。
默认状态为YES,如果设置为NO,可以阻止视图接收和分发触摸事件
&&&&推荐文章:
【上篇】【下篇】今天看啥 热点:
UIScrollView的属性总结,uiscrollview总结Properties&
alwaysBounceHorizontal &&&&&&&&&//一个布尔值,决定是否弹跳总是出现水平滚动时达到结束内容的看法。默认值是NO 。
@property(nonatomic) BOOL alwaysBounceHorizontal &&&&&&//如果这个属性被设置为YES而且bounces的值是YES,水平拖动是允许的内容,即使小于滚动视图的边界。默认值是NO&
alwaysBounceVertical &&&&&&&&&&&//一个布尔值,决定是否反弹总是发生在垂直滚动到达结束内容。默认值是NO 。&
@property(nonatomic) BOOL alwaysBounceVertical &//&//如果这个属性被设置为YES而且bounces的值是YES,垂直拖动是允许的内容,即使小于滚动视图的边界。默认值是NO
bounces &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//控制滚动视图是否反弹过去内容的边缘,然后再返回一个布尔值。
@property(nonatomic) BOOL bounces &&&&&&&&&&//默认值是YES 。&
bouncesZoom &&&&&&&&&&&&&&&&&&&&&//一个布尔值,决定当缩放超过上限或下限时是否滚动视图推动内容缩放。
@property(nonatomic) BOOL bouncesZoom &&&&&&&&&&&//如果这个属性的值是YES并且变焦缩放超过上限或下限,返回他们之前滚动视图暂时缩放内容。如果这属性是NO,立即停止在一个比例限制缩放。默认是YES。&
canCancelContentTouches &&//一个布尔值,控制是否涉及到的内容视图中总是导致跟踪。
@property(nonatomic) BOOL canCancelContentTouches
contentInset &&&&&&&//内容视图的距离,是从封闭的滚动视图插图。
@property(nonatomic) UIEdgeInsets contentInset &&//使用这个属性添加到周围滚动区域的内容。大小的单位是点。默认值是UIEdgeInsetsZero 。
&//在哪个点的内容视图的起源是从滚动视图的原点偏移&监控目前滚动的位置@property(nonatomic) CGPoint contentOffset &&&&&&//默认值为CGPointZero & &
contentSize &&&&&&//内容视图的大小。
@property(nonatomic) CGSize contentSize &&&&&&&&&&&//大小的单位是点。默认大小CGSizeZero的。
decelerating &&//返回的内容是否在滚动视图后,用户解除他们的手指。 (只读)
@property(nonatomic, readonly, getter=isDecelerating) BOOL decelerating &//如果用户不拖动内容但滚动事件仍发生&,返回的值是YES。
decelerationRate &&&//一个浮点值,确定在用户解除他们的手指后的减速率。
@property(nonatomic) float decelerationRate &&&//使用的UIScrollViewDecelerationRateNormal和UIScrollViewDecelerationRateFas常数作为合理减速率的参考点。
delaysContentTouches &&&&//一个布尔值,决定是否推迟滚动视图触摸手势的处理。
@property(nonatomic) BOOL delaysContentTouches &&//如果这个属性的值是YES ,滚动视图延误处理的触摸式的姿态,直到它可以决定
是否滚动是意图。如果该值是NO,滚动视图立即调用touchesShouldBegin : withEvent:inContentView :默认值是YES 。
delegate &&&&&&&&//滚动视图对象的代表。
@property(nonatomic, assign) id delegate &&//该委托必须采取UIScrollViewDelegate的协议。 UIScrollView的类调用委托实现每个协议的方法,它不保留委托。
directionalLockEnabled &&&&&&//一个布尔值,决定是否在某一特定方向禁用滚动
@property(nonatomic, getter=isDirectionalLockEnabled) BOOL directionalLockEnabled &//如果此属性是NO,则滚动允许在水平和垂直方向。若是YES,则只在使用者最开始滚动的方向上进行(水平或垂直),若开始滚动是沿对角线方向的则可任意方向滚动。默认值是NO。
dragging &&&&&&//一个布尔值,指示用户是否已经开始滚动内容。 (只读)
@property(nonatomic, readonly, getter=isDragging) BOOL dragging &&/在它被设置为YES之前,这个属性的值可能需要一些时间或滚动的距离
indicatorStyle &&&&//滚动指标的风格。
@property(nonatomic) UIScrollViewIndicatorStyle indicatorStyle &//默认的风格UIScrollViewIndicatorStyleDefault 。详见&&Scroll Indicator Style&
说明这些常数
maximumZoomScale &&&//一个浮点值指定可用于滚动视图的内容的最大规模的因素。
@property(nonatomic) float maximumZoomScale //此值确定多大的内容可以扩展。它必须大于最小缩放比例缩放才能启用。默认值是1.0 。
Discussion
minimumZoomScale &&&&&&浮点值,指定可应用于滚动视图的内容的最低比例因子
@property(nonatomic) float minimumZoomScale &&//此值决定如何可以缩放小内容。默认值是1.0
pagingEnabled &&//一个布尔值,决定是否启用分页滚动视图。
@property(nonatomic, getter=isPagingEnabled) BOOL pagingEnabled //如果这个属性的值是YES,当用户滚动时,滚动视图停止滚动视图的边界的倍数。默认值是NO 。
panGestureRecognizer &&&&//泛手势的基本手势识别。 (只读)
@property(nonatomic, readonly) UIPanGestureRecognizer *panGestureRecognizer //你的应用程序访问此属性,当它希望能够通过滚动视图更精确地控制泛手势确认。
pinchGestureRecognizer &&&&&&&//捏的基本的手势识别。 (只读)
@property(nonatomic, readonly) UIPinchGestureRecognizer&*pinchGestureRecognizer //你的应用程序访问此属性时,它希望能够通过滚动视图更精确地控制捏手势确认。
scrollEnabled &&&&&&&&//一个布尔值,决定是否启用滚动。
@property(nonatomic, getter=isScrollEnabled) BOOL scrollEnabled &&&//如果这个属性的值是YES ,滚动启用,如果它是NO,滚动被禁用。默认值是YES。 &被禁用滚动时,滚动视图不接受触摸事件,将其转发响应链。
scrollIndicatorInsets &&&&&//滚动指标点到滚动视图的边缘的距离。
@property(nonatomic) UIEdgeInsets scrollIndicatorInsets &&&//默认值为UIEdgeInsetsZero
scrollsToTop &&&&//一个布尔值,控制是否滚动到顶部的姿态是有效的
@property(nonatomic) BOOL scrollsToTop &&&//当设为YES,发生这种姿态时滚动视图跳转到内容顶端,此属性的默认值是YES 。
showsHorizontalScrollIndicator &&&&&&//一个布尔值,控制水平滚动指标是否是可见的。
@property(nonatomic) BOOL showsHorizontalScrollIndicator //默认值是YES 。指标是可见的,而跟踪正在进行,结束后淡出。
showsVerticalScrollIndicator &&&&&&&&&//一个布尔值,控制垂直滚动指标是否是可见的。
@property(nonatomic) BOOL showsVerticalScrollIndicator &&////默认值是YES 。指标是可见的,而跟踪正在进行,结束后淡出。
tracking &&&&//返回判断是否用户触碰内容触发滚动 (只读)
@property(nonatomic, readonly, getter=isTracking) BOOL tracking &&//如果用户已经触及的内容视图但可能还没有开始拖动它。这个属性的值便是YES
zoomBouncing &&&&&//&一个布尔值,指示缩放已超过指定的接收范围。 (只读)
@property(nonatomic, readonly, getter=isZoomBouncing) BOOL zoomBouncing //这个属性的值是YES如果滚动视图缩放回最小或最大变焦缩放值;否则值为NO 。&
zooming &&&&//一个布尔值,指示内容是否认为正在放大或缩小。 (只读)
@property(nonatomic, readonly, getter=isZooming) BOOL zooming &&//如果用户缩放手势,否则它是没有这个属性的值是YES&
zoomScale &&//一个浮点值,指定目前用于滚动视图的内容的比例因子。
@property(nonatomic) float zoomScale &&&&&&&&&//此值确定多少内容目前正在缩放。默认值是1.0&
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 & 控制控件滚动到顶部
这里把UIScrollView的几个要点总结下:
从你的手指touch屏幕开始,scrollView开始一个timer,如果:
1. &150ms内如果你的手指没有任何动作,消息就会传给subView。
2. &150ms内手指有明显的滑动(一个swipe动作),scrollView就会滚动,消息不会传给subView,这里就是产生问题二的原因。
3. 150ms内手指没有滑动,scrollView将消息传给subView,但是之后手指开始滑动,scrollView传送touchesCancelled消息给subView,然后开始滚动。
观察下tableView的情况,你先按住一个cell,cell开始高亮,手不要放开,开始滑动,tableView开始滚动,高亮取消。
&delaysContentTouches的作用:
这个标志默认是YES,使用上面的150ms的timer,如果设置为NO,touch事件立即传递给subView,不会有150ms的等待。
&cancelsTouches的作用:
这个标准默认为YES,如果设置为NO,这消息一旦传递给subView,这scroll事件不会再发生。
Instance Methods
flashScrollIndicators &&&&&//暂时显示滚动指标。
- (void)flashScrollIndicators &&//当你把滚动视图移动到前面,你应该调用此方法。&
scrollRectToVisible:animated: &//滚动一个特定区域的内容以便它在接收是可见的
- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated &&&&&//此方法滚动查看内容,以便由rect定义的区域仅仅是滚动视图内是可见的。如果该地区已是可见的,该方法什么都不做。
rect &&&&&&&&&&&&&&&&//定义一个矩形面积的内容视图。
animated &&&&&&&//YES if the scrolling should be animated, NO if it should be immediate.&
setContentOffset:animated: &&&&&设置从内容视图的原点偏移对应接收机的起源
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated
contentOffset &&&//从内容视图的原点偏移的一个点
animated &&&&&&&&&&YES表示以一个恒定的速度过渡到新的偏移,NO表示立即到达
setZoomScale:animated: &&&//一个浮点数指定当前的缩放比例
- (void)setZoomScale:(float)scale animated:(BOOL)animated &//新的值应该在是minimumZoomScale和maximumZoomScale之间
scale &&&&&&&&//缩放内容的新的值。
animated &&&//YES推动过渡到新的规模, NO 以使立即过渡。
touchesShouldBegin:withEvent:inContentView: &&&//自定义默认行为,当手指触摸在显示的内容由子类重写。
- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event&inContentView:(UIView *)view &//UIScrollView的默认行为是调用触摸事件发生的UIResponder的事件处理方法的目标子视图 &
touches &&&&//一个涉及的UITouch实例集代表表示事件的开始阶段
event &&&&&&&//代表在触摸触摸对象属于事件的对象。
view &&&&&&&&&//在内容中发生触摸手势子视图。&
Return Value &&&&//返回NO ,如果你不想滚动视图发送的事件消息查看。如果你想以接收这些消息,返回YES (默认) 。&
touchesShouldCancelInContentView: &&&&//返回是否取消有关的内容子视图的接触,并开始拖动。
- (BOOL)touchesShouldCancelInContentView:(UIView *)view &//它开始发送跟踪邮件的内容视图后动视图调用此方法。如果它从这种方法收到NO便停止拖动和转发触摸事件的内容子视图。滚动视图不调用此方法如果canCancelContentTouches 属性值是NO
view &&&&&&&在内容中被触发的视图对象
Return Value &&&//YES取消进一步触控消息查看,NO查看继续收到这些消息。如果视图认为是不是一个UIControl对象默认YES,否则返回NO
zoomToRect:animated: &&&//缩小到特定区域的内容,所以它是在接收器中可见。&
- (void)zoomToRect:(CGRect)rect animated:(BOOL)animated &&//这种方法调整的zoomScale进行必要的缩放以便使内容视图成为由矩形定义的区域
rect &&&&&&&&&//矩形定义内容视图区
animated &&&&&&&&&//YES if the scrolling should be animated, NO if it should be immediate.&
Constants&
Scroll Indicator Style
typedef enum { &//指示器风格设置
UIScrollViewIndicatorStyleDefault, &&&&&//默认,
UIScrollViewIndicatorStyleBlack, &&&&&&&&//适用于白色内容背景
UIScrollViewIndicatorStyleWhite &&
} UIScrollViewIndicatorS &&
Deceleration Constants &&//减速常数
The rate of deceleration for a scrolling view. &&
const float UIScrollViewDecelerationRateN &&&//默认减速率
const float UIScrollViewDecelerationRateF &&&&&
相关搜索:
相关阅读:
相关频道:
IOS教程最近更新[转载]UIScrollView的属性总结
contentSize是scrollview可以滚动的区域,比如frame = (0 ,0 ,320
,480) contentSize = (320
,960),代表你的scrollview可以上下滚动,滚动区域为frame大小的两倍。
contentOffset是scrollview当前显示区域顶点相对于frame顶点的偏移量,比如上个例子你拉到最下面,contentoffset就是(0
,480),也就是y偏移了480
contentInset是scrollview的contentview的顶点相对于scrollview的位置,例如你的contentInset
= (0 ,100),那么你的contentview就是从scrollview的(0 ,100)开始显示
另外UITableView是UIScrollView的子类,它们在上述属性又有所不同,tabelview的contentsize是由它的下列方法共同实现的
- (NSInteger)numberOfS
- (NSInteger)numberOfRowsInSection:(NSInteger)
- (CGFloat)tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexP
- (CGFloat)tableView:(UITableView *)tableView
heightForHeaderInSection:(NSInteger)
- (CGFloat)tableView:(UITableView *)tableView
heightForFooterInSection:(NSInteger)
它会自动计算所有的高度和来做为它的contentsize的height.
例如你在delegate方法
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {
&&&&return
那么你的tabelview的contentsize就是(320, 4400)
17:36 zcbbin 阅读(194)
UIScrollView
scroll&view&原理
//作者:禚来强 iphone开发q*****: 邮箱:转帖请保留
demo 可以到我的博客
在滚动过程当中,其实是在修改原点坐标
当手指触摸后, scroll view会暂时拦截触摸事件,使用一个
计时器,假如在计时器到点后,没有发生手指移动事件,
那么,scroll view发送tracking events到被点击的subview
假如在计时器到点前,发生了移动事件,那么 scroll view 取消tracking
自己发生滚动
子类可以重载touchesShouldBegin:withEvent:inContentView:
决定自己是否接收touch事件
pagingEnabled当值是YES,会自动滚动到subview的边界,默认是NO
touchesShouldCancelInContentView: 开始发送tracking
messages消息给subview的时候
调用这个方法,决定是否发送tracking
messages消息到subview,假如返回NO,发送,YES则不发送
假如 canCancelContentTouches属性是NO,则不调用这个方法
来影响如何处理滚动手势
scroll view还处理缩放和平移手势
要实现缩放和平移,必须实现委托viewForZoomingInScrollView:
scrollViewDidEndZooming:withView:atScale:
两个方法,另外
maximumZoomScale和minimumZoomScale两个属性要不一样&
当touch后还没有拖动的时候,值是YES,否则NO
zoomBouncing
当内容放大到最大或者最小的时候,值是YES,否则NO
当正在缩放的时候,值是YES,否则NO
decelerating
当滚动后,手指放开,但是还在继续滚动中,这个时候是 YES,其他是NO
decelerationRate
设置手指放开后的减速率
maximumZoomScale
一个浮点数,表示能放最大的倍数
minimumZoomScale&
一个浮点数,表示能缩最小的倍数
pagingEnabled
当值是YES,会自动滚动到subview的边界,默认是NO
scrollEnabled
决定是否可以滚动
delaysContentTouches
是个布尔值,当值是YES的时候,用户触碰开始,scroll
view要延迟一会,看看是否用户有意图滚动,假如滚动了,那么捕捉touch-down事件,否则就不捕捉, 假如值是NO,当用户触碰,
scroll view会立即触发touchesShouldBegin:withEvent:inContentView:,
canCancelContentTouches
当值是YES的时候,用户触碰后,然后在一定时间内没有移动,scrollView发送tracking
events,然后用户移动手指足够长度触发滚动事件,这个时候,scrollView发送了touchesCancelled:withEvent:
到subview,然后scroView开始滚动
假如值是NO,scrollView发送tracking
events后,就算用户移动手指,scrollView也不会滚动
contentSize
里面内容的大小,也就是可以滚动的大小,默认是0,没有滚动效果。
showsHorizontalScrollIndicator
滚动时,是否显示水平滚动条
showsVerticalScrollIndicator
滚动时,是否显示垂直滚动条
默认是yes,就是滚动超过边界,会反弹有反弹回来的效果,假如是 NO,那么滚动到达边界,那么会连忙停止
bouncesZoom
和bounces类似,区别在于,这个效果反映在缩放上面,假如缩放超过最大缩放,那么会反弹效果,假如是NO,则到达最大或者最小的时候,立即停止
directionalLockEnabled
默认是NO, 可以在垂直和水平方向同时运动, 当值是YES, 假如一开始是垂直或者是水平运动,那么接下来会锁定另外一个方向的滚动,
假如一开始是对角方向滚动,则不会禁止某个方向
indicatorStyle
滚动条的样式,基本只是设置颜色,总共3个颜色,默认,黑色的,白色的
scrollIndicatorInsets
设置滚动条的位置
CGPoint contentOffSet
监控目前滚动的位置
CGSize contentSize
滚动范围的大小
UIEdgeInsets contentInset
视图在scrollView中的位置
id&UIScrollerViewDelegate&
BOOL directionalLockEnabled
指定控件是否只能在一个方向上滚动
BOOL bounces
控制控件遇到边框是否反弹
BOOL alwaysBounceVertical
控制垂直方向遇到边框是否反弹
BOOL alwaysBounceHorizontal
控制水平方向遇到边框是否反弹
BOOL pagingEnabled
控制控件是否整页翻动
BOOL scrollEnabled
控制控件是否能滚动
BOOL showsHorizontalScrollIndicator
控制是否显示水平方向的滚动条
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
控制控件滚动到顶部
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。iOS UIScrollView 你可能不知道的奇技淫巧 - IOS - 伯乐在线
& iOS UIScrollView 你可能不知道的奇技淫巧
iOS 的 UIScrollView 可以说是十分强大,巧妙地运用它可以得到一些意想不到的效果。本文将举几个 ScrollView 不常见运用的例子。
自带信息应用
这个界面既可以上下卷动,也可以左右滑动拉出发送时间。
P.S. 气死宝宝了,我做了一组精美的 gif,但是大小都超出简书限制…..无语,大家就脑补一下效果吧。
这个效果大体看一下就非常像一个很大的 ScrollView,可以四个方向都能滑动。但是 UITableView 只能上下滚动,硬要修改那就是大手术,不推荐这样做。因此我想到的方法是先创建一个 ScrollView,将其 contentSize 设置为 TableView 的 contentSize,并将其宽度再设置大一个像素,这样左右方向也可以滑动了。然后监听 ScrollView 的滚动事件,将其 contentOffset.y 绑定到 TableView 的 contentOffset.y 上, 那么 contentOffset.x 就可以来设置每个 cell 的内部效果了。
下面我们看看代码:
前半部分很简单,就是一个 TableView 的初始化,下面是我们的重点,我创建了一个 UIScrollView,让其 frame 与 TableView 的一致,Inset 也需要一致,然后设置代理来监听滚动事件。
那么最后一句是什么意思呢?
因为 ScrollView 会拦截其下面的 View 的触摸事件,这样我们的 Cell 就无法被选中了。因此我们必须让 ScrollView 的 userInteractionEnabled 属性为 false,这样它就不响应并拦截触摸事件了,但是谁来让它滑动呢?好在 iOS 把它内部的一个 UIPanGestureRecognizer 开放了出来,我们就可以将其嫁接到 TableView 的身上,这样 TableView 就既可以响应点击,也可以响应滚动了。
紧接着,我们需要知道 TableView 的内容有多大,这个大小需要计算,那么什么时候这个大小会被计算完呢?就是在下面这个代理方法被调用时:
我们更新 ScrollView 的 contentSize。
然后我们监听 ScrollView 的滚动事件:
这就应该很简单了,分别将 x、y 应用到响应的属性即可,y 轴就给 TableView,让其可以上下卷动,x 轴就给每个 cell,让其做自己的处理。
最终效果如下:(不动右键新标签打开)
主页面 Spotlight 效果
先看最终效果:(不动右键新标签打开)
实现和上面差不多,开头声明部分一致,代理方法如下:
这里为了实现吸附效果,我用到了 scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer) 这个方法,它的作用是通知代理用户已经松开手指,现在视图将会以一个速度卷动到一个目标位置,并且这个目标位置是可以用指针修改的。所以我只需判断一下视图将会滚动到什么位置,如果超过一个临界值,就让它完全滚动出来,否则就滚动回去。
本文通过这两个小例子希望能起到抛砖引玉的作用,其实许多效果的实现都可以牵扯到 ScrollView 的运用。最后还是推荐大家关注一下 WWDC,很多 Session 都很有启发性。
参考 Session:
可能感兴趣的话题
系统的信息应用那个侧拉出现时间其实是用 UICollectionView 实现的,就一个 UICollectionView,时间在每个 Cell 的最右边
关于iOS频道
iOS频道分享iOS和Swift开发,应用设计和推广,iOS相关的行业动态。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2016 伯乐在线

我要回帖

更多关于 ios tableview属性 的文章

 

随机推荐