近日在做项目的时候,为了快捷适配屏幕采用了Storyboard,添加约束以后运行后发现一个问题(下面将以普通案例展示该问题);在4.7 甚至更大的屏幕下是没有问题的,如下图(4.7屏幕):

但是放到更小的3.5英寸就会出现问题,发现下面的按钮不见了,主要原因是输入框太多,导致更个屏幕放不下,如下图(3.5屏幕):

想了下就决定用ScrolleView,ContentSize可以设置大一些,这样在其他屏幕上没有太多的影响,在3.5英寸的屏幕下也可以滑动了;但是在Storybord下添加ScrollView,添加约束的时候发现他并不会按照你猜想的去执行;经过仔细研究,大致知道了原因;这是由于scrollview本身contentSize、contentInsets等复杂的特性导致,苹果文档在讲autolayout的时候甚至专门拿出一节讲;

那么如何对scrollview进行自动布局?

解决方案:可以给ScrollView添加一个唯一的子视图(View),大小和ScrollView一样,然后把所有添加到ScrollView上面的控件,都添加在子视图(View)上面;

步骤如下:

1、首先在我们的Controller自带的View里面添加一个ScrollView,一般情况下一个View的边距确定是通过Leading, Trailing, Top, Bottom space确定的,通常我是使用最快捷的方式:在StoryBoard中右键拖动出View与SuperView的线来选择;但是如果对UIScrollView使用此方法,使其与SuperView边缘重合,即设置边距为0,会发现怎么也和SuperView对齐不了。

究其原因,是因为有一个默认Margin的存在,UIScrollView四周的默认Margin是16(xcode6.0);

解决方法是:不要用快捷方式,在StoryBoard的右下角,点自动布局第二个的Pin图标,在弹出的小窗口中去掉"Constrain to margins"的勾选,然后将其上的四个边距设置为0,如下图所示:

2、在ScrollView上面添加一个View成为ScrollView的子视图,点开下面设置约束的4个按钮的第2个,设置约束距离ScrollView的距离为(0.0.0.0)如下图所示:

3、这个时候会发现报错了,先不用管它,咱们继续往下走;

4、点开下面设置约束的4个按钮的第一个,选择 Horizontal Center in Container, 并打上对勾,(如果想要左右滑动就选择 Vertical Center in Container,同时实现左右上下则全不选);

5、再次打开下面设置约束的4个按钮的第2个选择Height 设置你想要的大小(假如是700);(如果想要左右滑动就选择 Width, 同时实现左右上下就全部设置)(这个高度是以后运行后Scroller的ContentSize);

6、设置完成之后你会发现错误不见了,只有一个黄色的警告,这是由于Frame没有更新导致的,我们来更新下Frame;

7、接下来就可以在这个ScrollView的子视图View上面来添加控件了,这里要记住设置约束的时候是相对于父试图View的;

8、运行程序,发现在3.5英寸屏幕已经可以滑动了,,而在4.7屏幕还是和原来一样  如下图:

下一篇将持续更新相关知识点;

Email:dingding3w@126.com

iOS开发-UI 从入门到精通(五)的更多相关文章

  1. iOS开发-UI 从入门到精通(二)

    iOS开发-UI 从入门到精通(二)是对 iOS开发-UI 从入门到精通(一)知识点的巩固,主要以习题练习为主,增强实战经验,为以后做开发打下坚实的基础! ※开发环境和注意事项: 1.前期iOS-UI ...

  2. iOS开发-UI 从入门到精通(三)

    iOS开发-UI 从入门到精通(三)是对 iOS开发-UI 从入门到精通(一)知识点的综合练习,搭建一个简单地登陆界面,增强实战经验,为以后做开发打下坚实的基础! ※在这里我们还要强调一下,开发环境和 ...

  3. iOS开发-UI 从入门到精通(一)

    一.UI概述 (1)UI(User Interface)用户界面,用户能看到的各种各样的页面元素: (2)iOS App = 各种各样的UI控件+业务逻辑和算法: (3)想要开发出一款精美的应用程序, ...

  4. iOS开发-UI 从入门到精通(四)

    一.UITextField 1.UITextField是什么? (1)UITextField(输入框):是控制文本输入和显示的控件.在App中UITextField出现频率也比较高: (2)iOS系统 ...

  5. iOS开发——UI进阶篇(十五)Quartz2D介绍

    一.Quartz2D简介 1.什么是Quartz2DQuartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作绘制图形 : 线条\三角形\矩形\圆\弧等绘制文字绘 ...

  6. iOS开发UI篇—CAlayer(创建图层)

    iOS开发UI篇—CAlayer(创建图层) 一.添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控 ...

  7. iOS开发UI篇—Modal简单介绍

    iOS开发UI篇—Modal简单介绍 一.简单介绍 除了push之外,还有另外一种控制器的切换方式,那就是Modal 任何控制器都能通过Modal的形式展⽰出来 Modal的默认效果:新控制器从屏幕的 ...

  8. iOS开发UI篇—Button基础

    iOS开发UI篇—Button基础 一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状 ...

  9. iOS开发UI篇—简单的浏览器查看程序

    iOS开发UI篇—简单的浏览器查看程序 一.程序实现要求 1.要求 2. 界面分析 (1) 需要读取或修改属性的控件需要设置属性 序号标签 图片 图片描述 左边按钮 右边按钮 (2) 需要监听响应事件 ...

随机推荐

  1. 统计Go, Go, Go

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   结束了概率论,我们数据之旅的下一站是统计.这一篇,是统计的一个小介绍.   统 ...

  2. Openfire/XMPP学习之——一个简单的Smack样例

    昨天讲了Openfire的搭建和配置,今天来讲一下Smack.如果对如何搭建和配置Openfire的,可以参考Openfire/XMPP学习之——Openfire的安装.配置. Smack是一个开源, ...

  3. ORM开发之解析lambda实现group查询(附测试例子)

    目的:以编程方式实现group查询,在开发ORM时,需要达到这样的效果 先看一个简单的group语句 select BarCode,ProductName,COUNT(BarCode) as tota ...

  4. JavaScript 框架设计

    JavaScript 高级框架设计 在现在,jQuery等框架已经非常完美,以致于常常忽略了JavaScript原生开发,但是这是非常重要的. 所以,我打算写一个简单的框架,两个目的 熟练框架的思想 ...

  5. Java内存模型深度解析:锁--转

    原文地址:http://www.codeceo.com/article/java-memory-5.html 锁的释放-获取建立的happens before 关系 锁是java并发编程中最重要的同步 ...

  6. 自己使用的一个.NET轻量开发结构

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIgAAABFCAIAAAAerjlvAAAE2UlEQVR4nO2a3U/bVhiH+bdyPaqpmx

  7. Stackoverflow/dapper的Dapper-Extensions用法(一)

    Dapper-Extensions Dapper Extensions is a small library that complements Dapper by adding basic CRUD ...

  8. 附录D 安装ZooKeeper

    D.1    安装ZooKeeper D.1.1   下载ZooKeeper ZooKeeper是Apache基金会的一个开源.分布式应用程序协调服务,是Google的Chubby一个开源的实现.它是 ...

  9. StructureMap.dll 中的 GetInstance 重载 + 如何利用 反射动态创建泛型类

    public static T GetInstance<T>(ExplicitArguments args); // // Summary: // Creates a new instan ...

  10. 用CS的思维可以指导BS的项目吗?

    最近项目上线,越来越觉的让人不爽.1.在录数据的界面领导要求用Enter键一路打下来,用户不用操作鼠标数据就可以录完. 2.CS的项目中用快捷键的确很方便,但是大家在BS的项目中也用快捷键吗? 反正我 ...