一、知识点简单介绍

1.UIScrollView控件是什么?

(1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限

(2)当展⽰示的内容较多,超出⼀一个屏幕时,⽤用户可通过滚动⼿手势来查看屏幕以外的内容

(3)普通的UIView不具备滚动功能,不能显⽰示过多的内容

(4)UIScrollView是一个能够滚动的视图控件,可以⽤用来展⽰示⼤大量的内容,并且可以通过滚 动查看所有的内容

(5)  举例:手机上的“设置”、其他⽰示例程序

2.UIScrollView的简单使用

(1)将需要展⽰的内容添加到UIScrollView中

(2)设置UIScrollView的contentSize属性,告诉UIScrollView所有内容的尺⼨寸,也就是告诉 它滚动的范围(能滚多远,滚到哪⾥里是尽头)

3.属性

(1)常用属性:

1)@property(nonatomic)CGPointcontentOffset; 这个属性⽤用来表⽰示UIScrollView滚动的位置

2)@property(nonatomic)CGSizecontentSize;这个属性⽤用来表⽰示UIScrollView内容的尺⼨寸,滚动范围(能滚多远)

3)@property(nonatomic)UIEdgeInsetscontentInset; 这个属性能够在UIScrollView的4周增加额外的滚动区域

(2)其他属性:

1)@property(nonatomic) BOOL bounces;  设置UIScrollView是否需要弹簧效果

2)@property(nonatomic,getter=isScrollEnabled)BOOLscrollEnabled; 设置UIScrollView是否能滚动

3)@property(nonatomic) BOOL showsHorizontalScrollIndicator; 是否显⽰示⽔水平滚动条

4)@property(nonatomic) BOOL showsVerticalScrollIndicator; 是否显⽰示垂直滚动条

4.注意点

• 如果UIScrollView⽆无法滚动,可能是以下原因:

(1)没有设置contentSize

(2) scrollEnabled = NO

(3) 没有接收到触摸事件:userInteractionEnabled = NO

(4)没有取消autolayout功能(要想scrollView滚动,必须取消autolayout)

二、关于UIScrollView常见属性的一些说明

1.属性使用的代码示例

 1 #import "MJViewController.h"2 3 @interface MJViewController ()4 {5     //在私有扩展中创建一个属性6     UIScrollView *_scrollView;7 }8 @end9
10 @implementation MJViewController
11
12 - (void)viewDidLoad
13 {
14     [super viewDidLoad];
15
16     // 1.创建UIScrollView
17     UIScrollView *scrollView = [[UIScrollView alloc] init];
18     scrollView.frame = CGRectMake(0, 0, 250, 250); // frame中的size指UIScrollView的可视范围
19     scrollView.backgroundColor = [UIColor grayColor];
20     [self.view addSubview:scrollView];
21
22     // 2.创建UIImageView(图片)
23     UIImageView *imageView = [[UIImageView alloc] init];
24     imageView.image = [UIImage imageNamed:@"big.jpg"];
25     CGFloat imgW = imageView.image.size.width; // 图片的宽度
26     CGFloat imgH = imageView.image.size.height; // 图片的高度
27     imageView.frame = CGRectMake(0, 0, imgW, imgH);
28     [scrollView addSubview:imageView];
29
30     // 3.设置scrollView的属性
31
32     // 设置UIScrollView的滚动范围(内容大小)
33     scrollView.contentSize = imageView.image.size;
34
35     // 隐藏水平滚动条
36     scrollView.showsHorizontalScrollIndicator = NO;
37     scrollView.showsVerticalScrollIndicator = NO;
38
39     // 用来记录scrollview滚动的位置
40 //    scrollView.contentOffset = ;
41
42     // 去掉弹簧效果
43 //    scrollView.bounces = NO;
44
45     // 增加额外的滚动区域(逆时针,上、左、下、右)
46     // top  left  bottom  right
47     scrollView.contentInset = UIEdgeInsetsMake(20, 20, 20, 20);
48
49     _scrollView = scrollView;
50 }
51
52 - (IBAction)down:(UIButton *)sender {
53     [UIView animateWithDuration:1.0 animations:^{
54         //三个步骤
55         CGPoint offset = _scrollView.contentOffset;
56         offset.y += 150;
57         _scrollView.contentOffset = offset;
58
59         //_scrollView.contentOffset = CGPointMake(0, 0);
60     }];
61 }
62 @end

2.几个属性坐标示意图

3.重要说明

(1)UIScrollView的frame与contentsize属性的区分:UIScrollView的frame指的是这个scrollview的可视范围(可看见的区域),contentsize是其滚动范围。

(2)contentinset(不带*号的一般不是结构体就是枚举),为UIScrollView增加额外的滚动区域。(上,左,下,右)逆时针。contentinset可以使用代码或者是视图控制器进行设置,但两者有区别(注意区分)。

(3)contentsize属性只能使用代码设置。

(4)contentoffset是个CGpoint类型的结构体,用来记录ScrollView的滚动位置,即记录着“框”跑到了哪里。知道了这个属性,就知道了其位置,可以通过设置这个属性来控制这个“框”的移动。

(5)不允许直接修改某个对象内部结构体属性的成员,三个步骤(先拿到值,修改之,再把修改后的值赋回去)。

(6)增加了额外区域后,contentoffset的原点在哪里?

三、有助于理解的几个截图

模型图:

对比图:

坐标图:

转载于:https://www.cnblogs.com/xvewuzhijing/p/4951943.html

Objective-C学习—UIScrollView控件使用相关推荐

  1. Delphi 7学习开发控件

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 我们知道 ...

  2. iOS开发UI篇—UIScrollView控件介绍

    iOS开发UI篇-UIScrollView控件介绍 一.知识点简单介绍 1.UIScrollView控件是什么? (1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限 ...

  3. IOS开发UIScrollView控件详解

    首先实现UIScrollViewDelegate协议: [plain] view plaincopy #import <UIKit/UIKit.h> @interface Activity ...

  4. 二,控件学习--2.控件基类-QObject

    学习计划 功能作用 1.对象名称,属性. 应用场景 进行控件样式的分组管理 from PyQt5.Qt import *class Window(QWidget):def __init__(self) ...

  5. 学习UpdatePanel控件

    UpdatePanel控件的使用 ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果.其中的UpdatePanel就是设置页面中异 步局部更新区域,它必须依赖 ...

  6. C#学习--dotnetbar控件学习

    1.添加控件 首先添加选项卡-〉添加项->选项卡不切换直接选择浏览到DevComponents.DotNetBar2.dll-〉这时控件会自动呈选中状态-〉点击任意一个会全选所有控件-〉确定

  7. LibUIDK 学习------CSkinListCtrl控件消息响应事件

    2021年修改了控件继承自CUIWnd,因此对于CSkinListCtrl控件的消息响应如下: ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)     ON_ ...

  8. C++桌面应用开发(Qt学习)——控件(2)ItemWidget

    ① QListWidget 列表容器 QListWidgetItem * item 一行内容 //利用listWidget写一行诗QListWidgetItem *item = new QListWi ...

  9. [C#学习] BindingNavigator控件

    一 概述 BindingNavigator控件的用户界面 (UI) 由一系列 ToolStrip 按钮.文本框和静态文本元素组成,用于进行大多数常见的数据相关操作(如添加数据.删除数据和在数据中导航) ...

  10. 学习UpdatePanel控件-

      原文可以显示图片(转载:http://blog.csdn.net/ILOVEMSDN/archive/2007/11/11/1879343.aspx)   UpdatePanel控件的使用 200 ...

最新文章

  1. 基于场效应管2N3819制作非接触电压检测 - 购买到假货了
  2. SQLServer过期的解决方案
  3. IBM等创建开放虚拟化联盟对抗VMware
  4. c语言中从键盘上输入三个数,将之排序后按由大到小的顺序输出,从键盘上输入3个数,将它们按由大到小的顺序排列好输出...
  5. java-appium-527进阶-1 UiAutomator12区别和封装
  6. LeetCode 1295. 统计位数为偶数的数字
  7. 软件工程讲义 3 两人合作(2) 要会做汉堡包
  8. 初步了解react-babel-虚拟DOM-JSX-类组件-函数式组件
  9. swat模型_SWAT-CUP(SUFI-2)的工作流程
  10. 【MyBatis笔记】03-映射文件的sql语句中 #{} 和 ${} 的区别以及实现模糊查询
  11. c/c++教程 - 2.1 程序的内存模型 内存四区 代码区 全局区 堆区 栈区 new操作符
  12. Struts2中Action各种转发类型
  13. robocopy解决文件夹路径层级太深,windows右键功能无法删除和拷贝的问题
  14. Robust performance of virtual sensing methods for active noise control 翻译
  15. “我爱淘”冲刺阶段Scrum站立会议8
  16. 重庆计算机二级成绩查询2020年12月,重庆2020年12月计算机等级考试成绩查询入口已开通...
  17. Java Spider介绍
  18. 关于中台的深度思考和中台实战
  19. vue2和vue3中点击复制粘贴
  20. 安装Fedora(附镜像下载地址)

热门文章

  1. Dubbo 优雅停机演进之路
  2. 安装centos7 Minimal后 开启远程SSH
  3. win10 预览版启用 Hyper-V 虚拟机 装 boot2docker找不到菜单按钮问题
  4. LayaAir 性能统计面板 laya.utils.Stat
  5. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_24-页面预览-页面预览测试
  6. Redis主从配置,哨兵,集群的设计原理
  7. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第2节 线程实现方式_9_Thread类的常用方法_获取线程名称...
  8. ARP (地址解析协议)
  9. Linux nmon 命令
  10. 基础才是王道——TCP/IP详解学习笔记