iOS开发之UIScrollView详解
程序员文章站
2023-11-26 17:28:04
介绍:uiscrollview用于在一个小范围里显示很大的内容的控件。通过用户平滑、手捏手势,在这个小区域里查看不同内容。是uitableview和uitextview的父...
介绍:uiscrollview用于在一个小范围里显示很大的内容的控件。通过用户平滑、手捏手势,在这个小区域里查看不同内容。是uitableview和uitextview的父类。它是视图,但是比较特殊,可以看成把它看成2层的结构。上面是它的frame层,跟一般试图一样,是它的可见区域,下面层是contentview,可以滑动。
父类uiview方法
复制代码 代码如下:
// autoresizingmask - 现在基本弃用,改用autolayout
typedef ns_options(nsuinteger, uiviewautoresizing) {
uiviewautoresizingnone = 0, //不进行自动调整
uiviewautoresizingflexibleleftmargin = 1 << 0, //自动调整与superview左侧距离,右侧距离保持不变
uiviewautoresizingflexiblewidth = 1 << 1, //自动调整控件自身宽度,保证与superview左右距离不变
uiviewautoresizingflexiblerightmargin = 1 << 2, //自动调整与superview右侧距离,左侧距离保持不变
uiviewautoresizingflexibletopmargin = 1 << 3, //自动调整与superview顶部距离,底部距离保持不变
uiviewautoresizingflexibleheight = 1 << 4, //自动调整控件自身高度,保证与superview上下距离不变
uiviewautoresizingflexiblebottommargin = 1 << 5 //自动调整与superview底部距离,顶部距离保持不变
};
// transform - 形变属性【结构体 - 不能直接赋值】
// 绝对位置
cgaffinetransformmakerotation(cgfloat angle);//旋转
cgaffinetransformmakescale(cgfloat sx, cgfloat sy);//缩放
cgaffinetransformmaketranslation(cgfloat tx, cgfloat ty);//移动
// 增量修改
cgaffinetransformrotation(cgaffinetransform t, cgfloat angle);//旋转
cgaffinetransformscale(cgaffinetransform t, cgfloat sx, cgfloat sy);//缩放
cgaffinetransformtranslation(cgaffinetransform t, cgfloat tx, cgfloat ty);//移动
uiscrollview中容易混淆的属性
contentsize 内容尺寸
contentinset 内容边框尺寸
contentoffset 可视框偏移
contentsize、contentinset、contentoffset的区别
uiscrollviewdelegate代理方法
复制代码 代码如下:
// 滚动时会调用,任何方式触发contentoffset变化都会调用,调用频率高
- (void)scrollviewdidscroll:(uiscrollview *)scrollview;
// 开始拖拽时调用
- (void)scrollviewwillbegindragging:(uiscrollview *)scrollview;
// 停止拖拽时调用
- (void)scrollviewdidenddragging:(uiscrollview *)scrollview withdecelerate:(bool)decelarate;
// 即将停止滚动时调用(拖拽松开后开始减速时调用)
- (void)scrollviewwillbegindecelerating:(uiscrollview *)scrollview;
// 滚动停止时调用,特殊情况:当一次减速动画尚未结束的时候再次拖拽,didenddecelerating不会被调用
- (void)scrollviewdidenddecelerating:(uiscrollview *)scrollview;
// 开始缩放时调用
- (void)scrollviewwillbeginzooming:(uiscrollview *)scrollview withview:(uiview *)view;
// 停止缩放时调用
- (void)scrollviewdidendzooming:(uiscrollview *)scrollview withview:(uiview *)view atscale:(cgfloat)scale;
// 正在缩放时调用
- (void)scrollviewdidzoom:(uiscrollview *)scrollview;
uiscrollview基本用法
scrollview = [[uiscrollview alloc] initwithframe:cgrectmake(0, 0, 320, 460)];
scrollview.backgroundcolor = [uicolor redcolor];
// 是否支持滑动最顶端
scrollview.scrollstotop = no;
scrollview.delegate = self;
// 设置内容大小、内容边框、可视偏移
scrollview.contentsize = cgsizemake(320, 460*10);
scrollview.contentinset = uiedgeinsetsmake(0, 50, 50, 0);
scrollview.contentoffset = cgpointmake( 50 , 50 );
// 是否反弹
scrollview.bounces = no;
// 是否分页
scrollview.pagingenabled = yes;
// 是否滚动
scrollview.scrollenabled = no;
// 设置滚动条风格
scrollview.indicatorstyle = uiscrollviewindicatorstylewhite;
// 设置滚动条边缘
scrollview.scrollindicatorinsets = uiedgeinsetsmake(0, 50, 0, 0);
// 控制是否显示水平方向的滚动条
scrollview.showshorizontalscrollindicator = no;
// 控制是否显示垂直方向的滚动条
scrollview.showsverticalscrollindicator = yes;
// 设置scrollview缩放的范围
scrollview.maximumzoomscale = 2.0; // 最大2倍
scrollview.minimumzoomscale = 0.5;
// 是否同时运动,lock
scrollview.directionallockenabled = yes;
[self.view addsubview:scrollview];
推荐阅读