欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS开发之UIScrollView详解

程序员文章站 2023-12-10 21:41:16
介绍: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);//移动

iOS开发之UIScrollView详解

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];