CN109558201A - 一种基于UIScrollView的iOS界面简化布局方法 - Google Patents

一种基于UIScrollView的iOS界面简化布局方法 Download PDF

Info

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
Application number
CN201811514341.5A
Other languages
English (en)
Inventor
许华堂
沈翔宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Linewell Software Co Ltd
Original Assignee
Linewell Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Linewell Software Co Ltd filed Critical Linewell Software Co Ltd
Priority to CN201811514341.5A priority Critical patent/CN109558201A/zh
Publication of CN109558201A publication Critical patent/CN109558201A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution 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

一种基于UIScrollView的iOS界面简化布局方法
技术领域
本发明涉及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展示各个子视图。
CN201811514341.5A 2018-12-11 2018-12-11 一种基于UIScrollView的iOS界面简化布局方法 Pending CN109558201A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 乐视控股(北京)有限公司 界面的可视化开发方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
BESTSWIFTER: "[Update] 替换图片死链", 《HTTPS://GITHUB.COM/BESTSWIFTER/BLOG/COMMIT/4CDF77E3112A68854B1E317E174725D644B75807?SHORT_PATH=87EED78#DIFF-87EED7878A0C291D8EF4E9AA89066ECF4DB7E15273C8E25978296E4AA6D309AE》 *

Cited By (2)

* Cited by examiner, † Cited by third party
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