【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记22 多MVC模式Demo中的AutoLayout自动布局

简介: 上一话我们详细介绍了多MVC模式以及Segue过渡的时候,这一话用一个新的Demo来诠释。我们新建一个Psychologist的工程。

上一话我们详细介绍了多MVC模式以及Segue过渡的时候,这一话用一个新的Demo来诠释。


我们新建一个Psychologist的工程。把ViewController的名字改为PsychologistViewController。那么这个控制器是做什么用的呢?系统问你一个问题,然后你做出回答,系统会根据你的回答判断你是否开心,这样就能用上我们之前的Hppiness的项目。

在视图中加入一个label,然后调整字体为36,文字居中,label两边上边都与蓝线对齐。


每一话都会渗透一些自动布局的内容。我们让这个label重置到它被推荐的位置。


我们会看到:


中间的蓝线代表label与下边界产生了关联,但是我们不希望这样做,因为你并不确认运行的设备的尺寸。通常我们不去关联下边界,而让下边界的距离做一个弹性的变量。

我们打开右侧的尺寸检测器,可以看到所有的约束:


我可以选中我不喜欢的约束然后delete它。删掉之后会出现黄线,因为我们没有足够的约束了,按照我们之前讲的,在试图大纲中update frame,你会看到黄线消失了。

有了问题,现在我们把答案拖出来,这是一个按钮。我把这个按钮拖到中间,然后点击重置位置到推荐位置(和上面操作一样),然后我们删除不需要的约束,这里我只保留竖直方向的居中,我们不需要上下的间距和固定宽高,因为我希望这个按钮的大小根据它里面的内容来自动调整。


这时我需要使用其他约束了,点击右下角按钮栏的第一个按钮


因为已经有了竖直方向的中心,所以只要添加一个水平方向的居中就行了。


你会看到现在我们的按钮在水平和竖直方向上都居中了。再次update frame,按钮的位置就调整好了。


然后复制按钮,加入不同的内容。

新按钮重置到推荐的位置,你会看到它有两个约束,一个水平居中,一个底部距离:



我们用同样的办法创建第三个按钮:


我们运行一下我们的程序:


你可以看到顶部的文字被截掉了,旋转一下:


看起来横屏模式下效果很好,但是竖屏就不行了,为什么会这样呢?因为我们设置了字体为36号,你可以在storyboard属性监测器的Autoshrink中看到,目前的设置为Fixed

 Font Size(固定字体大小):


但是这个字体不需要固定大小,我需要设置它的最小值,不希望它比12号要小,设置如下:


现在我们再来运行,你会看到字体会自动缩放,当屏幕变宽的时候字体会变大。


那么有没有办法可以让文字自动换行呢?一种方法是用textView替换label。另一种方法是设置label中的Line Breaks,当前的做法是删减尾部,最直接的直接设定lines的值。



目录
相关文章
|
设计模式 存储 前端开发
MVVM、MVC、MVP三种常见软件架构设计模式的区别
MVC、MVP 和 MVVM 是三种常见的软件架构设计模式,主要通过分离关注点的方式来组织代码结构,优化开发效率。
1823 12
|
设计模式 存储 前端开发
MVC(Model-View-Controller)是一种软件设计模式,用于将应用程序的输入逻辑、业务逻辑和用户界面逻辑分离
【6月更文挑战第17天】**MVC模式**是软件设计模式,用于分离输入逻辑、业务逻辑和用户界面。模型处理数据和业务,视图展示数据,控制器协调两者响应用户请求。优点包括:关注点分离、提高开发效率、简化测试、支持多视图及便于大型项目管理。
470 3
|
语音技术 开发工具 图形学
Unity与IOS⭐一、百度语音IOS版Demo调试方法
Unity与IOS⭐一、百度语音IOS版Demo调试方法
|
存储 前端开发 测试技术
MVC、MVP、MVVM 模式
MVC、MVP 和 MVVM 是三种常见的软件架构模式,用于分离用户界面和业务逻辑。MVC(Model-View-Controller)通过模型、视图和控制器分离数据、界面和控制逻辑;MVP(Model-View-Presenter)将控制逻辑移到 Presenter 中,减少视图的负担;MVVM(Model-View-ViewModel)通过数据绑定机制进一步解耦视图和模型,提高代码的可维护性和测试性。
|
设计模式 开发框架 前端开发
MVC 模式在 C# 中的应用
MVC(Model-View-Controller)模式是广泛应用于Web应用程序开发的设计模式,将应用分为模型(存储数据及逻辑)、视图(展示数据给用户)和控制器(处理用户输入并控制模型与视图交互)三部分,有助于管理复杂应用并提高代码可读性和维护性。在C#中,ASP.NET MVC框架常用于构建基于MVC模式的Web应用,通过定义模型、控制器和视图,实现结构清晰且易维护的应用程序。
424 2
|
前端开发 测试技术 开发者
MVC模式在现代Web开发中有哪些优势和局限性?
MVC模式在现代Web开发中有哪些优势和局限性?
|
前端开发 Java
【案例+源码】详解MVC框架模式及其应用
【案例+源码】详解MVC框架模式及其应用
1419 0
|
存储 前端开发 数据库
MVC模式和三层架构
MVC模式和三层架构
|
设计模式 前端开发 PHP
PHP中实现简易的MVC模式
【8月更文挑战第31天】 本文将引导你了解如何在PHP中应用MVC(Model-View-Controller)架构模式,通过一个简单的例子展示其实现过程。我们将从基础的概念出发,逐步深入到代码实践,最终让你能够自己动手构建一个简易的MVC框架。文章不仅提供理论知识,还包含具体的代码示例,帮助你更好地理解并运用MVC模式。
|
设计模式 前端开发 Java
mvc模式详解
mvc模式详解