初学者用storyBoard时选中Auto Layout 会自动添加很多约束导致滚动视图不可滚动,最好在开始设置控件之前将滚动视图和图像视图的A L属性禁止掉。
滚动视图实现
self.scrollView.contentSize = self.imageView.image.size;
让图片缩放
采用UIScrollViewDelegate协议并实现代理方法返回须要缩放的内容视图
-(UIView *)viewForZoomingInScrollView: (UIScrollView *)scrollView
{
return self.imageView;
}
canCencelContentTouches 属性
如果属性值为YES并且跟踪到手指正触摸到一个内容控件,这时如果用户拖动手指的距离足够产生滚动,那么内容控件将收到一个touchesCancelled:withEvent:消息,而scroll view将这次触摸作为滚动来处理。如果值为NO,一旦content view开始跟踪(tracking==YES),则无论手指是否移动,scrollView都不会滚动。
简单通俗点说,如果为YES,就会等待用户下一步动作,如果用户移动手指到一定距离,就会把这个操作作为滚动来处理并开始滚动,同时发送一个touchesCancelled:withEvent:消息给内容控件,由控件自行处理。如果为NO,就不会等待用户下一步动作,并始终不会触发scrollView的滚动了。
ScrollView的俩个属性 DelaysContentTouches 和 CanCancelCotentTouch 影响 scrollView中添加按钮等控件的事件响应问题 (先触发按钮还是先触发滚动的问题)
假设视图中存在按钮 我在代码中测试实现了下面4种不同组合的效果 1代表设置了DelaysContentTouches属性 2代表设置了 CanCancelContentTouches 属性
[scrollView setDelaysContentTouches:NO]; 1
[scrollView setCanCancelContentTouches:NO]; 2
[scrollView setCanCancelContentTouches:NO]; 2
设置情况 点击按钮效果 在按钮上拖动 和 在视图中拖动
1、2都不设置 点击按钮延迟高亮 拖动按钮无反应 视图滚动
1设置2 不设置 按钮正常点击 拖动时候触发按钮 不滚动
1不设置 2设置 点击延迟高亮 快速拖动视图滚动 慢速按钮触发
1、2都设置 按钮正常 点击 拖动时候触发按钮 不滚动