CN109558201A - 一种基于UIScrollView的iOS界面简化布局方法 - Google Patents
一种基于UIScrollView的iOS界面简化布局方法 Download PDFInfo
- Publication number
- CN109558201A CN109558201A CN201811514341.5A CN201811514341A CN109558201A CN 109558201 A CN109558201 A CN 109558201A CN 201811514341 A CN201811514341 A CN 201811514341A CN 109558201 A CN109558201 A CN 109558201A
- Authority
- CN
- China
- Prior art keywords
- view
- container
- uiscrollview
- contentsize
- sub
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明涉及一种基于UIScrollView的iOS界面简化布局方法,其通过为container添加约束,并将container的上、下、左、右和contentSize的距离为0,在布局时,通过确定container的大小与位置,就可以确定contentSize的大小,最后根据contentSize进行各个子视图的展示,就可以保证各个子视图的展示效果,避免出现页面布局混乱或不能滑动的现象。
Description
技术领域
本发明涉及iOS中UI布局技术领域,具体说是一种基于UIScrollView的iOS界面简化布局方法。
背景技术
Autolayout(自动布局)改变了传统的以frame(某个视图的大小,包括起始位置)为主的布局思想,它是一种相对布局,核心思想是视图与视图之间的位置关系。比如,我们可以根据矩形的起始横坐标、纵坐标、长和宽这四个变量确定它的位置。或者,如果已经确定矩形A的位置,只要知道矩形B每条边的和A对应边之间的距离,也能确定B的位置。前者就是frame的思想,它基于绝对数值,而后者是Autolayout的思想,它基于偏移量的概念。
UIScrollView(iOS系统的滑动滚动视图)有自己的frame也就是我们在屏幕上能看到的区域,它还有一个contentSize(UIScrollView的大小)的概念。在使用frame布局的时候,我们一般先设置好子视图的位置,最后再设置contentSize,它会将所有的子视图包含在内,于是通过滑动,我们就可以在有限的布局中,看到所有的内容了。
在Autolayout时代,为了简化布局,我们希望contentSize能够自动设置。比如有一个UIScrollView,它有AB两个子视图。frame分别为A(x:0,y:0,width:10,height:10)和B(x:10,y:0,width:10,height:10),那么我们自然会认为这两个视图左右并排排列,contentSize为(x:0,y:0,width:20,height:10):如图1可自动计算contentSize。
这种把若干个子视图合并,得出contentSize的能力,人类是天生具备的,但是计算机却不是这样。仅凭以上信息,程序无法推断出真正的contentSize。原因在于,我们没有明确的告诉系统,在这两个子视图拼接而成的区域以外,还有没有区域应该被contentSize包含。也就是contentSize也有可能是图2中描述的阴影部分。
如果需要指定contentSize就是两个正方形拼接而成的区域,我们还需要提供四个信息:
左边的正方形的左侧的边,距离contentSize左边的距离为0;
右边的正方形的右侧的边,距离contentSize右边的距离为0;
两个正方形顶部的边,距离contentSize顶部边的距离为0;
两个正方形底部的边,距离contentSize底部边的距离为0;
通过以上的分析,我们可以看到contentSize是依赖于子视图自身的大小,和上下左右四个方向的留白大小计算出的。而UIScrollView的leading/trailing/top/bottom是相对于它的contentSize而不是bounds来确定的。
根据UIScrollView的leading/trailing/top/bottom来确定子视图的位置,而通过分析,UIScrollView的leading/trailing/top/bottom是相对于自己的contentSize而言的,而contentSize又是根据子视图位置决定的。也就是说,contentSize无法确定,从而造成视图无法按预期效果进行展示,导致页面布局错乱或不能滑动。
发明内容
本发明的目的在于提供一种基于UIScrollView的iOS界面简化布局方法,其在简化布局的基础上保证了页面展示效果。
为实现上述目的,本发明采用的技术方案是:
一种基于UIScrollView的iOS界面简化布局方法,其包括以下步骤:
步骤1、为UIScrollView添加约束;
使用Autolayout直接创建一个UIScrollView视图,并UIScrollView视图添加到父视图上添加约束:将UIScrollView视图的左右两边和父视图对齐,并居中显示;
步骤2、为container添加约束;
首先,将container添加到UIScrollView视图上,并设置约束为container的上、下、左、右和contentSize的距离为0;
然后,确定container的高度,container的高度确定后,container的宽度直接决定了UIScrollView的宽度;
步骤3、在container上添加子视图并设置约束条件;
确定第一个子视图的左边与父视图container左边的距离;确定最后一个子视图的右边与父视图container右边的距离,从而获得container的宽度;
UIScrollView的contentSize与container的大小、位置相同;
步骤4、根据contentSize展示各个子视图。
采用上述方案后,本发明通过为container添加约束,并将container的上、下、左、右和contentSize的距离为0,在布局时,通过确定container的大小与位置,就可以确定contentSize的大小,最后根据contentSize进行各个子视图的展示,就可以保证各个子视图的展示效果,避免出现页面布局混乱或不能滑动的现象。
附图说明
图1为采用本发明的方法明确contentSize时各视图的展示效果图;
图2为未明确contentSize时各视图的展示效果图。
具体实施方式
本发明揭示了一种基于UIScrollView的iOS界面简化布局方法,其包括以下步骤:
步骤1、为UIScrollView添加约束。使用Autolayout时,不用考虑frame布局,而是直接创建一个UIScrollView视图,并UIScrollView视图添加到父视图上添加约束:将UIScrollView视图左右两边和父视图对齐,并居中显示。
步骤2、为container(滑动滚动视图里面的容器,用于承载子视图)添加约束。这里对container的约束非常重要,首先让container添加到UIScrollView视图上才能添加约束,然后设置约束为container的上、下、左、右和contentSize的距离为0,因此只要container的大小确定,contentSize也就可以确定了,因为此时它和container大小、位置完全相同。
然后直接通过一个数值,确定container的高度。避免了依赖UIScrollView布局。这样一来,UIScrollView就变成水平的了,container的宽度直接决定了UIScrollView的宽度。
步骤3、跟普通的Autolayout一样,在container上添加子视图并设置约束条件,其中要牢记的是:
第一个子视图要确定它左边距离它的父视图container左边的距离,最后一个子视图要确定它右边距离它的父视图container右边的距离,这样就可以获得container的宽度。至此,container的大小确定,contentSize也就可以确定了,因为此时它和container大小、位置完全相同。
步骤4、根据contentSize展示各个子视图。
图1为采用本发明方法明确contentSize后,子视图(A和B)的展示效果图,图2为未采用本发明方法,即未明确contentSize时的各子视图(A和B)的展示效果图。将图1和图2进行比较可知,本发明通过确定contentSize,来保证各个子视图的展示效果,避免出现页面布局混乱或不能滑动的现象。
以上所述,仅是本发明实施例而已,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (1)
1.一种基于UIScrollView的iOS界面简化布局方法,其特征在于:包括以下步骤:
步骤1、为UIScrollView添加约束;
使用Autolayout直接创建一个UIScrollView视图,并UIScrollView视图添加到父视图上添加约束:将UIScrollView视图的左右两边和父视图对齐,并居中显示;
步骤2、为container添加约束;
首先,将container添加到UIScrollView视图上,并设置约束为container的上、下、左、右和contentSize的距离为0;
然后,确定container的高度,container的高度确定后,container的宽度直接决定了UIScrollView的宽度;
步骤3、在container上添加子视图并设置约束条件;
确定第一个子视图的左边与父视图container左边的距离;确定最后一个子视图的右边与父视图container右边的距离,从而获得container的宽度;
UIScrollView的contentSize与container的大小、位置相同;
步骤4、根据contentSize展示各个子视图。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811514341.5A CN109558201A (zh) | 2018-12-11 | 2018-12-11 | 一种基于UIScrollView的iOS界面简化布局方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811514341.5A CN109558201A (zh) | 2018-12-11 | 2018-12-11 | 一种基于UIScrollView的iOS界面简化布局方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109558201A true CN109558201A (zh) | 2019-04-02 |
Family
ID=65869869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811514341.5A Pending CN109558201A (zh) | 2018-12-11 | 2018-12-11 | 一种基于UIScrollView的iOS界面简化布局方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109558201A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110471592A (zh) * | 2019-08-23 | 2019-11-19 | 武汉斗鱼鱼乐网络科技有限公司 | 一种列表视图的展现方法及装置 |
CN112711401A (zh) * | 2020-12-31 | 2021-04-27 | 南威软件股份有限公司 | 基于组件化工程的iOS界面自上而下的布局方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8645851B1 (en) * | 2011-09-30 | 2014-02-04 | Google Inc. | Methods and apparatus for using a variant of the Bellman-Ford algorithm that operates with inconsistent constraints |
CN106528115A (zh) * | 2016-10-31 | 2017-03-22 | 乐视控股(北京)有限公司 | 界面的可视化开发方法及装置 |
-
2018
- 2018-12-11 CN CN201811514341.5A patent/CN109558201A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8645851B1 (en) * | 2011-09-30 | 2014-02-04 | Google Inc. | Methods and apparatus for using a variant of the Bellman-Ford algorithm that operates with inconsistent constraints |
CN103959244A (zh) * | 2011-09-30 | 2014-07-30 | 谷歌公司 | 用户界面上的组件的高效布局 |
CN106528115A (zh) * | 2016-10-31 | 2017-03-22 | 乐视控股(北京)有限公司 | 界面的可视化开发方法及装置 |
Non-Patent Citations (1)
Title |
---|
BESTSWIFTER: "[Update] 替换图片死链", 《HTTPS://GITHUB.COM/BESTSWIFTER/BLOG/COMMIT/4CDF77E3112A68854B1E317E174725D644B75807?SHORT_PATH=87EED78#DIFF-87EED7878A0C291D8EF4E9AA89066ECF4DB7E15273C8E25978296E4AA6D309AE》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110471592A (zh) * | 2019-08-23 | 2019-11-19 | 武汉斗鱼鱼乐网络科技有限公司 | 一种列表视图的展现方法及装置 |
CN112711401A (zh) * | 2020-12-31 | 2021-04-27 | 南威软件股份有限公司 | 基于组件化工程的iOS界面自上而下的布局方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9307150B2 (en) | Image processing device, image processing method, and program for display angle determination | |
CN109558201A (zh) | 一种基于UIScrollView的iOS界面简化布局方法 | |
CN107835461B (zh) | 焦点移动控制方法、智能电视及计算机可读存储介质 | |
CN102508655B (zh) | 桌面图标展示方法及系统 | |
CN107362535B (zh) | 游戏场景中的目标对象锁定方法、装置及电子设备 | |
US8180157B2 (en) | Image processing method, image processing system and computer program product | |
CN104360816A (zh) | 截屏方法及系统 | |
RU2014133354A (ru) | Дисплейный терминал и способ отображения интерфейсных окон | |
CN107071583A (zh) | 一种用于iptv平台的epg页面焦点控制方法 | |
EP3091733A1 (en) | Display method and terminal | |
CN104461256A (zh) | 界面元素显示方法和系统 | |
US7945116B2 (en) | Computer-assisted image cropping for book scans | |
CN204666636U (zh) | 一种多项联检试剂结构 | |
CN104133614A (zh) | 屏幕菜单显示方法和系统 | |
CN105976698A (zh) | 一种电子地图中的道路渲染方法及装置 | |
CN104915053B (zh) | 一种界面控件的位置确定方法和装置 | |
CN107229398A (zh) | 电子病历表单控件联动系统 | |
CN104318538A (zh) | 一种二维序列帧图片拼接成大图片的方法及其所用的装置 | |
CN105068984B (zh) | 一种自动拼图排版方法 | |
CN106803050A (zh) | 一种条形码读取装置及其使用方法 | |
CN105677267B (zh) | 一种页面显示方法及装置 | |
CN105718439B (zh) | 一种基于人脸识别的照片自动排版方法 | |
CN102905194B (zh) | 数字电视浏览器中焦点的移动方法、装置和数字电视 | |
CN109164950A (zh) | 一种移动终端系统界面设置方法、装置、介质和设备 | |
US20150051724A1 (en) | Computing device and simulation method for generating a double contour of an object |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190402 |
|
RJ01 | Rejection of invention patent application after publication |