我花了一个晚上和一个早上的时间研究了iOSUI元素布局的问题
一、iOSUI元素布局的历程
代码计算frame >> iOS6之前的autoreszing(父控件和子控件的关系)>> iOS6以后autolayout(任何控件都可以设置约束) >> sizeclass(ios8)。
1、iOS6之前,UIView有个autoresizingMask属性:
意思是自动调整子控件与父控件中间的位置、宽高。它对应的是一个枚举的值。
enum {
UIViewAutoresizingNone = 0, ---0
UIViewAutoresizingFlexibleLeftMargin = 1 << 0, ---1
UIViewAutoresizingFlexibleWidth = 1 << 1, ---2
UIViewAutoresizingFlexibleRightMargin = 1 << 2, ---4
UIViewAutoresizingFlexibleTopMargin = 1 << 3, ---8
UIViewAutoresizingFlexibleHeight = 1 << 4, ---16
UIViewAutoresizingFlexibleBottomMargin = 1 << 5 ---32
};
2、iOS6以后才有的AutoLayout,弥补以往的autoresizing在布局方面的不足之处,同时未来面对更多尺寸适配时界面布局可以更好的适应。
AutoLayout意译为自动布局,通过各项约束条件来计算出合理的布局来达到我们的的预期和意图,将我们想象中的结果展现出来。constraint设定非常灵活,可以通过多种约束来实现一种布局。
使用之前必须弄清楚的事情:
1)我们要抛弃以往旧的布局方式,不再去关注View的Frame、Center和autoresizing。因为这些坐标和大小的定位都可以通过来AutoLayout完成。
2)理解每一种Constraint的含义。否则,当你去看别人的实现的Constraint时,就会有种看天书的感觉。
3)只要约束设定的合理,就一定能够完成我们理想中目标布局。
打开某个Xib或者StoryBoard,在右侧Show in file inspector里面找到Ues Autolayout,将其选中,则Autolayout便启用成功,autoresizingMask被废弃,其所有以往的功能和特性都被Autolayout取代。
3、sizeclass的作用:iOS8为了解决屏幕适配问题,引入了sizeclass概念,不需要判断屏幕的尺寸,也没有横屏和竖屏的概念,只有(Compact、Any,Regular)的概念(storyboard界面下面有个屏幕选择器)Compact——紧凑、小、Any——任意,Regular——宽松、大
sizeclass仅仅是对屏幕进行了分类, 真正实现UI元素的自动布局还得使用autolayout。 在sizeclass不再有横竖屏的概念, 只有屏幕尺寸的概念,也不再有具体尺寸的概念, 只有抽象尺寸的概念;
4、sizeclass和autolayout的作用
sizeclass: 仅仅是对屏幕进行了分类(判断屏幕)
autolayout: 对屏幕中各种元素进行约束(位置\尺寸)。
以上就是讲了一些布局的发展历程和相关技术。问题来了,现在iOS8出来以后,但大部分程序是以iOS7开发的呢,我们要学什么呢?建议把AutoLayout的技术掌握扎实了,以下是我整理AutoLayout的入门和提高的文章
AutoLayout 使用心得1、初体验 http://lvwenhan.com/ios/430.html
AutoLayout 使用心得2、实现三等分 http://lvwenhan.com/ios/431.html
3、自定义cell并使用 Auto Layout http://lvwenhan.com/ios/441.html
4、通过 22 行代码实现拖动回弹效果http://lvwenhan.com/ios/442.html
5、自动计算UITableViewCell高度http://lvwenhan.com/ios/449.html
6、制造炫酷的下拉刷新动画 http://lvwenhan.com/ios/450.html
相关推荐
这份"ios UI设计"资源包包含了非官方但极具参考价值的信息,涵盖了屏幕尺寸、按钮大小、字体大小以及图标大小等多个关键设计元素。下面我们将深入探讨这些知识点。 首先,屏幕尺寸是iOS设计的基础。苹果的移动设备...
1. **Auto Layout**: iOS中的Auto Layout是布局UI元素的关键技术,它允许开发者定义UI元素之间的约束关系,以适应不同屏幕尺寸和设备方向。在创建QQ聊天界面时,Auto Layout用于确保消息气泡、头像、时间戳等元素的...
在iOS开发中,通过使用UIKit框架,开发者可以为UI元素设置合适的字体和颜色,以符合应用的风格和主题。 在用户界面的交互方面,笔记涉及到了手势识别(Gesture Recognizer)的概念。手势识别允许用户通过触摸屏幕来...
2. 在XIB中,你可以添加并布局所需的UI元素,如UILabel(显示团购名称、价格)、UIImageView(展示商品图片)、UIButton(用于查看详情或购买)等。确保每个元素都有一个唯一的tag值,以便在代码中轻松访问它们。 3....
此外,考虑到“八种样式”,开发者可能对同一扫雷游戏UI进行了多样的设计,比如改变颜色主题、布局风格、字体样式等,以满足不同用户的偏好。这需要熟练掌握Auto Layout和Size Classes,确保在不同设备和方向上都能...
本示例集合“ios常用ui的demo”涵盖了多个关键的UI组件和功能,帮助开发者更好地理解和实现这些常见的iOS界面元素。下面将对每个知识点进行详细说明。 1. **程序欢迎界面**:在iOS应用启动时,通常会展示一个欢迎...
QQ聊天布局需要自适应各种屏幕尺寸,因此我们需要为每个UI元素设置合适的约束,确保它们在屏幕大小变化时能够正确布局。 2. **UITableViewCell与CollectionViewCell**:为了实现消息列表的滚动效果,可以使用...
这种布局方法与传统的基于AutoLayout的编程方式不同,它倾向于使用更高级别的抽象来描述UI元素的相对位置和大小。本项目“iOS声明式Layout布局”是一个开源项目,旨在提供一个易于理解和使用的声明式布局框架,帮助...
1. **控件工厂方法**:提供了一系列静态方法,可以快速实例化常见的UI元素,如UIButton、UILabel、UIImageView等,减少重复代码。 2. **样式配置**:统一处理UI控件的样式,比如字体、颜色、边框等,确保应用内的...
这些组件包括但不限于按钮、标签、输入框、滑块、开关、图标以及各种布局模板等,涵盖了iOS应用设计的基本元素。通过使用这些预设的组件,设计师可以避免从零开始创建每个界面元素,极大地提高了设计效率。同时,...
在iOS开发中,用户界面(UI)的设计与实现是至关重要的,因为它直接影响到用户的体验和产品的吸引力。"iOS注册UI案例"是一个展示如何在iOS应用中创建用户注册流程的实例,由开发者“猫猫”精心制作。这个案例包含了...
#### 八、iOS界面元素使用指南 - **状态栏**:显示电池电量、信号强度等基本信息。 - **导航栏**:提供应用内的导航结构,帮助用户浏览不同页面。 - **工具栏**:放置常用操作按钮,如保存、分享等。 - **Tab栏**:...
在iOS开发中,UICollectionView是一种强大的UI组件,用于展示可滚动的、多列或多行的数据集合。这个组件在设计用户界面时提供了极大的灵活性,允许开发者自定义布局,展示各种复杂的数据结构。本文将深入探讨...
总之,SDAutoLayout是iOS开发中提升自动布局体验的一个实用工具,它简化了UITableView中cell的高度计算和UI元素的布局管理,使得开发者能更专注于业务逻辑,而不是界面适配问题。通过深入理解和熟练使用SDAutoLayout...
2. IOS常用控件:这可能包括一系列基本的UI元素,如UILabel(用于显示文本)、UIButton(用户交互按钮)、UISwitch(开关按钮)、UISlider(滑动条)等。每个控件都有其特定的属性和方法,如UILabel的text、font、...
1. **布局更新**:根据屏幕方向调整UI元素的位置和大小,确保它们在新的屏幕尺寸下仍能正确显示。 2. **视频画面旋转**:视频画面应随着设备的旋转而旋转,保持正确的方向。 3. **状态栏处理**:在横屏状态下,状态...
在iOS8中,Auto Layout可以根据设备的方向和屏幕尺寸动态调整UI元素的位置和大小,确保用户界面在各种环境下保持一致性和可用性。开发者可以通过Storyboard中的Inspector面板添加和编辑约束,或者通过代码实现。 ...
IBOutlet用于将UI元素与类的属性关联,IBAction则用于连接控件的事件到处理函数。 此外,Swift还提供了强类型系统和面向协议的编程,使得编写UI代码更加安全和灵活。例如,你可以自定义协议来扩展控件功能,或者...
在iOS开发中,"蜂巢布局"是一种独特的用户界面设计,它将屏幕上的元素以六边形网格的形式排列,类似于蜜蜂巢的结构。这种布局方式能够有效地利用屏幕空间,为用户提供新颖、有趣的交互体验,常见于图片展示、游戏...
在iOS开发中,UI设计是至关重要的,尤其是对于知名应用如新浪微博...这个过程不仅可以提升开发者对iOS UI设计的理解,也能锻炼解决复杂问题的能力。在实践中不断迭代和优化,你将能够创建出更加精致且高效的用户界面。