[菜鸟成长记]iOS开发自学笔记04-AutoLayout自动布局

  随着iphone6的问世,苹果又进一步加大了手机屏幕的尺寸,而且按照目前这种趋势来判断,未来应该还有可能会出现更大的屏幕的手机。如果没有AutoLayout那么目前iPhone有4种尺寸的屏幕,iPad也有两种尺寸。而一款应用程序想要兼容所有这些的不同尺寸的屏幕就必须要让程序做一些特殊处理,比如在程序里去获取屏幕尺寸再根据具体尺寸去建立不同的UI布局,显然每多一种屏幕就需要增加一种处理,这样很显然是繁琐和不经济的。而利用AutoLayout则可以使用约束对象的功能来实现一次布局在多种屏幕通用的目的,甚至连设备的旋转处理也能达到非常理想的效果。

  先介绍一下几种AutoLayout自动布局所经常使用的布局约束类型

  • width表示约束ui控件的固定宽度
  • height表示约束ui控件的固定高度
  • Leading Space to Superview 与父视图的左边界线保持固定距离
  • Trailing Space to Superview 与父视图的右边界线保持固定距离
  • Top Space to Superview 与父视图的顶部边界线保持固定距离
  • Bottom Space to Superview 与父视图的底部边界线保持固定距离
  • Horizotal Spacing 两个子视图之间的水平距离保持固定长度
  • Vertical Spacing 两个子视图之间的垂直距离保持固定长度
  • Width Equally 两个子视图之间保持相等的宽度
  • Height Equally 两个子视图之间保持相等的高度

  新建一个single view application的模板项目,向Main.stroryboard拖入两个button按钮,分别设置background的颜色为紫色和绿色,可以看到在画布上显示正确的两个button在不同尺寸屏幕的设备上的运行效果都有所偏差

实际设备上的运行效果:

iPhone 4s上的运行效果

因为我想要这两个button一直是保持这样的尺寸:两个button宽和高要相等,同时两个button离屏幕的两边都保持固定距离,且两个button之间的距离一直保持不变,所以添加以下约束:

  • 分别选择两个button并点击editor->pin->width,editor->pin->height设置其固定宽度和高度
  • 分别选择两个button并点击editor->pin->Leading Space to Superview,editor->pin->Trailing Space to Superview固定其和父视图之间的边界距离
  • 按住shift分别点击两个button,并点击editor->pin->Horizontal Spacing设置两个button之间保持固定的长度距离
  • 按住shift分别点击两个button,并点击editor->pin->Width Equally设置两个button拥有相等的宽度

增加完上面的约束后就可以看到程序运行的显示结果不会显得那么难看了

并且就算旋转屏幕也能得到比较好的结果:

时间: 2024-08-01 04:17:03

[菜鸟成长记]iOS开发自学笔记04-AutoLayout自动布局的相关文章

[菜鸟成长记]iOS开发自学笔记01-向helloworld致敬

我有一个梦想就是成为一个iOS开发.........菜鸟,老规矩,一切从helloworld开始. iOS8伴随着iphone6/6plus而来,Xcode6伴随着iOS8而来,苹果更新换代的速度依然很快,从硬件到软件,每次更新就意味着开发者们又要面临着一次次的恶补,当然,像我这样励志成为iOS开发菜鸟的人来说,目前还没有到面临这些问题的烦恼,我只需要专心做好我的hello world小程序,就像我从前无数次地在其他平台一样. 首先打开Xcode后从模板中选择single view applic

[菜鸟成长记]iOS开发自学笔记07-UITextField自动隐藏键盘

点击UITextField输入框后,软键盘默认情况下在结束输入后不会自动隐藏,目前总结了两种可以自动隐藏软键盘的方法: 第一种:通过响应UITextField对象的Did End On Exit事件,当点击默认软键盘的"Done"按钮或"Return"按钮会触发Did End On Exit 事件,通过编码实现来响应Did End On Exit事件来实现自动隐藏键盘 - (IBAction)TextFieldDidEndOnExit:(id)sender { [t

[菜鸟成长记]iOS开发自学笔记06-导航控制器和segue的传递数据

导航控制器通常用来显示分层内容的向下导航界面,受限于设备屏幕大小,iPhone或者iPad需要通过更多的层次访问来显示足够丰富的内容,导航控制器一般会和表视图同时存在,但不是说必须一起绑定使用,这里将表视图嵌入到导航控制器中用于分层显示视图内容,以single view application为模板建立一个project,打开Main.storyboard,点击view controller再在工具栏上点击editor->embed in->navigation controller将视图控制

[菜鸟成长记]iOS开发自学笔记03-UITableView初级进阶之cell的删除

上一节在自定义UITableView表视图单元格的基础上,实现了一个简单的表视图界面,包含了一些自定义的界面元素在内.苹果的产品从iPhone到MAC都提供了多种多样的手势操作以彰显其操作的人性化,在如“邮件”等系统自带软件的表视图单元格中,每个单元格向左滑动即可在最右边出现删除按钮,以方便用户快速地对所选择行执行删除操作.其实实现这个功能并不难,仅仅只需要在ViewController中实现UITableViewDataSource协议中的方法 - (void)tableView:(UITab

[菜鸟成长记]iOS开发自学笔记05-prototype cells中使用AutoLayout

事情起因于我在一个表格视图里打算添加表格单元行向左滑动显示删除按钮的操作,实现起来比较简单只要定义方法 -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 即使不包含任何方法实现部分的代码,只要定义了这个方法,编译运行程序后,向左华东单元行都是能出现删除按钮的

菜鸟成长记1,软件工程大一经历

菜鸟成长记1 -----大一总结及反思 大一即将结束,突然间想总结一下我的大一生活,最重要的还是好好反思一下. 回首整个大一感觉自己学了好多的东西,但最终的感觉还是一无所成,大一上学期学习c语言,一直处于一个总是一个没有入门的感觉,虽然简单的c经长期磨练已经差不多搞懂,不过稍微复杂点的抑或着说稍微麻烦点的都没有真正学会,仅仅是学过c而已,在学c的同时一直想练ACM可能真的是天赋不够也可能是自己不是这块料,在几经折磨下,做了uva上不超过30道题的情况下放弃了,除想练ACM这中间还接触了java和

给iOS开发自学的建议,附iOS自学资源

文/上嵌科技(简书作者) 原文链接:http://www.jianshu.com/p/4b7e7aceddf5 著作权归作者所有,转载请联系作者获得授权,并标注"简书作者". 很多同学都在大学期间,或在职期间想自学ios开发或者Android开发,今天小编就给大家集中介绍iOS开发自学方法和建议,附送iOS自学资料. ios开发自学者的建议从新手到入行 不要听信从0基础到精通.到专家,学习编程最最关键的是从新手到入门,当你入门了,你自我学习.自我驱动的能力会更强,没有入门,当你过了学习

IOS学习之斯坦福大学IOS开发课程笔记(第六课)

转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/28398697 作者:小马 这节课主要讲述多个MVC是如何协同工作的.到目前为止,所有的课程都只是涉及到一个视图.从这节课开始,将会持到多视图应用的例子. 多视图开发这里用navigationController举例子.这个也是比较常用的.如上图所示,一个 navigation Controller(MVC)会指向一个rootViewController(另一个MVC),这个是第一

IOS开发学习笔记-(2)键盘控制,键盘类型设置,alert 对话框

一.关闭键盘,放弃第一响应者,处理思路有两种 ① 使用文本框的 Did End on Exit 绑定事件 ② UIControl on Touch 事件 都去操作 sender 的  resignFirstResponder #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *txtUserName; @pro