《Swift iOS应用开发实战》——2.3 创建用户界面

简介:

本节书摘来自华章计算机《Swift iOS应用开发实战》一书中的第2章,第2.3节,作者:刘铭 著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3 创建用户界面

此前我们在图2-3和图2-5中分别看到了一个空白视图和一个含有多个界面元素的视图。下面我们就通过动手实践来完成用户界面的搭建。
打开Calculator项目中的Main.storyboard文件,确保文档大纲可见,此时IB编辑器中只呈现一个View Controller视图控制器的View。
从Xcode 4.5开始,IB针对用户界面的布局加入了自动布局(Auto Layout)特性,并且该特性在Xcode 5中得到了很大的改进。如果说在Xcode 5中使用自动布局特性还是一种可选方式,那么在Xcode 6中,它就是唯一的用户界面搭建方式了。关于自动布局特性我们会在后面章节详细介绍。
2.3.1 设置界面的预览窗口
在Xcode 6之前,当我们使用IB来搭建iPhone界面的时候,需要通过iOS模拟器或者在iPhone真机上查看最终的效果。现在,我们可以直接通过IB的预览窗口来实时查看所搭建界面的效果。
步骤1 在项目导航中选择Main.storyboard文件,在Xcode工具栏的Editor选择器中选择助手编辑器(Assistant editor),此时编辑区域被分割为左右两部分。为了增加编辑区域的可见范围,可以关闭导航区域和实用工具区域,如图2-7所示。

image

步骤2 点击编辑区域中右侧窗口顶部的助手图标,在弹出的菜单中选择“Preview→Main.storyboard (Preview)”,如图2-8所示。此时右侧窗口变成了iPhone视图大小,这个预览视图的效果就是最终呈现在iPhone手机上的效果。
步骤3 为了预览所搭建好的界面在不同屏幕尺寸的iPhone上的效果,点击预览窗口左下角的“+”图标,切换屏幕尺寸,如图2-9所示。这里我们可以选择iPhone 3.5-inch或iPhone 4-inch。

image

image

2.3.2 向视图添加界面元素
要想添加界面元素到视图之中,只要将其从对象库拖曳到视图里面相应的位置即可。
步骤1 在项目导航窗口中选择Main.storyboard文件,此时在IB编辑器中所呈现的用户界面非常简单,只有一个场景—View Controller Scene。
我们将会在该视图中添加一个Label对象和若干个Button对象。其中Label对象用于显示输入的数值和计算的结果。而那些Button对象则会充当计算器按键的角色。
步骤2 从Xcode右下角的对象库中找到Label对象,然后将其拖曳到视图之中,适当调整其大小,如图2-10所示。

image

此时我们会在视图大纲中发现,在View Controller Scene里面的View对象中包含了一个Label对象。
当我们将视图对象添加到控制器的视图中以后,在右侧的预览窗口中就会看到实际的效果,这对于程序员来说就是一种莫名的“慰藉”。
步骤3 选中新添加的Label对象,使用Option+Command+4快捷键切换到属性检视窗。在Label部分,将Label的内容改为0,Color设置为White Color,Font大小设置为24,Alignment设置为右对齐。在View部分,将Background设置为Light Gray Color。
步骤4 继续选中Label对象,使用Option+Command+5快捷键切换到大小检视窗(Size inspector),查看Label的Width值为288和Height的值为50(你创建项目的数值不见得与这两个值完全吻合),那么这个Label的宽度和高度的单位是什么呢?答案是点。
在项目中的Label对象,它的大小是288×50点,而实际大小则是576×100像素,1个点等于2个像素。为什么要有点和像素呢?主要原因是Retina。iPhone 4以前的设置不具备Retina屏,所以在其上面开发应用,1个点等于1个像素。但是,在具有Retina屏的设备上,苹果采用2倍的比例因子,主要是为了减轻开发的复杂度。以iPhone 4s为例,它的实际屏幕像素值是640×960,在为其设计用户界面的时候以点(Point)作为单位,这样在iPhone 4以前的设备上运行Calculator项目,Label的大小是288×50像素。在iPhone 4及以后的设备上运行Calculator项目,Label的大小是576×100像素值(288×50点)。而这些大小的设置与程序员无关,苹果会自动根据设备类型选择相应的比例因子。
步骤5 在Label的下方添加多个UIButton控件,然后修改按钮中的文字内容和大小,如果你愿意,还可以改变每个按钮的文字颜色,如图2-11所示。

image

在添加计数器按钮的时候,我们可以通过复制/粘贴的方式完成按钮的创建。
2.3.3 Interface Builder的布局工具
Interface Builder提供了一些有用的工具来帮助开发者对界面布局进行调整。

  1. 参考线
    当我们在视图中拖曳某个对象的时候,就会注意到有参考线出现,如图2-12所示。参考线可以帮助我们对界面进行更好布局。


image


参考线是自动出现在视图之中的,它会进行合理地磁力停靠,这样可以防止界面元素被放置在视图的边缘,避免了用户手指无法触控的情况。
我们还可以手动增加自定义的参考线到视图之中,在菜单中选择Editor,点击Add Horizontal Guide或Add Vertical Guide即可。如果要移除参考线,直接将其拖曳出编辑区即可。

  1. 选择句柄
    除了参考线以外,大部分的界面元素都有选择句柄用于调整对象的宽度和高度。当选中某个对象时,其周围的8个位置会出现小矩形,拖曳它们就可以改变其大小,如图2-13所示。

image

如果我们在视图中添加了Slider对象,就会发现它的高度是不能修改的。在对象库中的部分视图对象,其大小是不能调整的,苹果之所以这么做,是考虑到iOS应用程序的规格要有一定的统一性。

  1. 对齐
    要想在视图中快速对齐几个对象,需要先拖曳出一个矩形将它们全部包含进去,或者按住Shift键选择需要对齐的对象,然后选择菜单中的“Editor→Align”,选取相应的对齐方式即可。

如果需要对视图的位置进行微调,可以在选中它以后按上、下、左、右键去调整4个方向的位置,每按一次只会移动1个点(对Retina屏幕来说是2个像素)。

  1. 大小检视窗
    除了选择句柄以外,还有一个可以帮助我们调整对象大小的工具就是大小检视窗(The Size Inspector)。在Interface Builder中有很多检视窗,如属性、帮助、标识、大小和关联。其中,大小检视窗不仅用于设置对象的大小尺寸,还可以设置位置和停靠。

在场景中选定一个视图对象,然后按住Option键再移动鼠标悬停在另一个对象上,就会出现两个对象之间的距离数值,这个数值是以点(Point)为单位的。

相关文章
|
29天前
|
算法 计算机视觉 iOS开发
iOS 实时图像处理技术:使用 Core Image 和 Metal 进行高效滤镜应用
【4月更文挑战第8天】 在移动设备上实现高效的图像处理功能是现代应用程序开发中的一个关键需求。苹果的iOS平台提供了Core Image和Metal两大技术,它们为开发者提供了强大的工具来实现复杂的图像处理任务。本文将探讨如何使用Core Image进行基础图像处理,并结合Metal的性能优势,开发出一个自定义的实时图像滤镜。我们将通过创建一个能够动态调整参数并且具有实时反馈效果的滤镜来演示这一过程。
|
29天前
|
算法 计算机视觉 iOS开发
iOS 实时图像处理技术:Core Image 框架的应用
【4月更文挑战第8天】 在移动设备上实现高效的图像处理功能,对于提升用户体验和扩展应用程序能力至关重要。苹果公司的iOS平台提供了强大的Core Image框架,它允许开发者以高效和直观的方式执行复杂的图像处理任务。本文将深入探讨Core Image框架的关键特性,并通过实例演示如何在iOS应用中集成实时图像处理功能,不仅提高性能,同时保持了电池寿命的优化。我们将重点讨论面部识别、滤镜应用和性能优化等关键技术点,为读者提供一份全面的iOS图像处理指南。
|
8天前
|
存储 Swift iOS开发
使用Swift开发一个简单的iOS应用的详细步骤。
使用Swift开发iOS应用的步骤包括:创建Xcode项目,设计界面(Storyboard或代码),定义数据模型,实现业务逻辑,连接界面和逻辑,处理数据存储(如Core Data),添加网络请求(必要时),调试与测试,根据测试结果优化改进,最后提交至App Store或其它平台发布。
21 0
|
8天前
|
机器学习/深度学习 数据采集 TensorFlow
【Swift开发专栏】Swift与机器学习:构建智能应用
【4月更文挑战第30天】本文探讨了使用Swift开发机器学习应用,分为三个部分:机器学习基础(定义、类型及应用),Swift在机器学习中的作用(Swift for TensorFlow、Core ML及性能优势),以及实践技巧(数据预处理、特征工程、模型训练与部署、性能优化和用户界面集成)。通过学习,开发者能掌握构建智能应用的技能,利用Swift的性能和安全性提升应用效率。随着深入学习,开发者可探索更多高级特性和技术,如深度学习和复杂数据分析。
|
8天前
|
存储 API Swift
【Swift开发专栏】Swift函数与闭包的实战应用
【4月更文挑战第30天】本文介绍了 Swift 中函数和闭包的实战应用。首先,函数的基本使用包括定义、参数与返回值、函数类型以及高级技巧如嵌套函数。接着,讨论了闭包的语法,包括无名函数、作为函数参数、简写形式和尾随闭包。最后,展示了函数和闭包在实战中的应用,如排序过滤集合和处理异步任务的回调。
|
8天前
|
缓存 Swift UED
【Swift开发专栏】Swift应用的启动优化
【4月更文挑战第30天】本文介绍了Swift应用启动优化技巧,包括优化代码结构和资源加载。建议减少启动时加载的代码,采用延迟加载、分模块加载和懒加载策略;优化初始化代码,注意顺序、异步初始化和避免全局初始化。对于资源,压缩图片、使用矢量图和图片缓存可提升加载速度。文中还提供了实战案例,展示如何在代码中实施这些优化措施。
|
8天前
|
安全 Swift iOS开发
【Swift 开发专栏】Swift 与 UIKit:构建 iOS 应用界面
【4月更文挑战第30天】本文探讨了Swift和UIKit在构建iOS应用界面的关键技术和实践方法。Swift的简洁语法、类型安全和高效编程模型,加上与UIKit的紧密集成,使开发者能便捷地创建用户界面。UIKit提供视图、控制器、布局、动画和事件处理等功能,支持灵活的界面设计。实践中,遵循设计原则,合理组织视图层次,运用布局和动画,以及实现响应式设计,能提升界面质量和用户体验。文章通过登录、列表和详情界面的实际案例展示了Swift与UIKit的结合应用。
|
8天前
|
缓存 算法 Swift
【Swift 开发专栏】Swift 应用的性能优化技巧
【4月更文挑战第30天】本文探讨了Swift应用性能优化,强调理解性能瓶颈、针对性优化和平衡性能与代码质量的重要性。提出优化技巧,包括选择合适数据结构、避免不必要的对象创建、使用缓存、优化算法、减少计算、管理内存、利用多核处理、优化网络请求和界面渲染。通过实际案例分析证明了这些方法能有效提升应用性能和用户体验。开发者应持续关注新技术和方法,以适应不断提升的性能要求。
|
8天前
|
存储 安全 Swift
【Swift 开发专栏】使用 Swift 开发一个简单的 iOS 应用
【4月更文挑战第30天】本文介绍了使用 Swift 开发简单 iOS 待办事项应用的步骤。首先,阐述了 iOS 开发的吸引力及 Swift 语言的优势。接着,详细说明了应用的需求和设计,包括添加、查看和删除待办事项的功能。开发步骤包括创建项目、界面搭建、数据存储、功能实现,并提供了相关代码示例。最后,强调了实际开发中需注意的细节和优化,旨在帮助初学者掌握 Swift 和 iOS 开发基础。
|
15天前
|
搜索推荐 API iOS开发
利用SwiftUI构建动态iOS天气应用
【4月更文挑战第23天】 在本文中,我们将探讨如何使用SwiftUI框架实现一个动态的iOS天气应用程序。将重点介绍如何通过集成第三方天气API、设计响应式用户界面以及应用数据绑定技术来增强用户体验。我们的目标是创建一个能够根据当前位置实时更新天气信息的应用,并确保其界面简洁、易用且美观。
11 0