构建像Lego这样的应用程序—教程12
用图像,标签和按钮插座构建自定义的“产品”单元。
1.简介
在本教程12中,我们将使用“自动布局”,堆栈视图,图像视图,标签和按钮为“产品”场景构建自定义单元格布局。 表格视图将动态调整单元格的大小以适合内容。
2.从这里开始
在教程11中,我们通过自动调整单元格高度来结束“新闻”场景。 如果您从那里继续,那么您将拥有所需的一切。 跳至步骤3。
如果您想从本教程重新开始 ,可以按照以下步骤下载项目:
👉启动终端应用程序(从“应用程序”文件夹中)。
Terminal在终端中,输入:cd〜 cd ~/Documents
,然后按Return
。
👉将以下内容粘贴到Terminal中,然后按Return
:
git clone --recurse-submodules --branch Start-Tutorial-12 https://bitbucket.org/barefeetware/lego-tutorial-social.git
Terminal在终端中查看下载进度,然后等待下载完成。
👉在您的Documents文件夹中,打开lego-tutorial-social
文件夹。
👉打开Social.xcode.proj
文件。
本教程假定您知道如何完成本系列中已经介绍的任务。 如果不确定,请回顾以前的教程中更详细的步骤。
3.删除文件
在将更多文件添加到项目之前,让我们删除一些不再需要的文件。 当我们第一次创建项目时, FirstViewController.swift
和SecondViewController.swift
文件是作为Tabbed App模板的一部分创建的。 我们已经从使用这些文件的情节提要中删除了场景(并用“新闻和产品”场景替换了它们),因此我们也可以删除这些Swift文件。
👉在项目浏览器中单击FirstViewController.swift
文件一次。 按键盘上的delete
键。 Xcode提示您进行确认。 单击Move to Trash
按钮。
👉同样,单击SecondViewController.swift
文件并将其删除(即, Move to Trash
)。 Project Navigator显示这些文件已消失。
或者,我们可以单击第一个文件,按住Shift键单击第二个文件,以选择两个文件,然后按Delete
键立即将两个文件删除。
4.产品单元
让我们使用在教程7中创建“新闻”单元时所学的知识,快速创建“产品”单元。
我们的目标是像在Lego中一样将子视图组装成堆栈视图。
👉控制单击或右键单击“ Social
组”文件夹。 在出现的弹出菜单中,选择“ New File
。
iOS
选择iOS
和Cocoa Touch Class
。 单击Next
。
👉在弹出菜单的Subclass of
,选择UITableViewCell
(完全匹配大小写)。 对于Class
输入ProductTableViewCell
(注意: Product
而不是Products
)。 启用Also create XIB file
。 Language
应该是Swift
。
correctly正确填写表格后,单击“ Next
按钮。
Save“保存”对话框应默认与其他项目文件位于同一位置。
👉单击Create
按钮。
should您应该看到两个新文件添加到您的项目中。
👉单击ProductTableViewCell.xib
文件一次。 您应该会看到一个空的表格视图单元格,全部都是它自己。
5.添加图像视图
👉将单元格的底部边缘向下拖动到大约170
点高。
👉单击工具栏中的“ Library
按钮。 在搜索字段中输入图片。
now现在将“ Image View
从列表拖到空白单元格中,大约在中间。
👉在仍然选择图像视图的情况下,在“属性”检查器中,将“ Image
设置为placeholder
。 我们希望图像保持宽高比并适合图像视图,因此,将其Content Mode
设置为Aspect Fit
。
👉单击画布底部的“ Add Constraints
按钮。 输入80
的Height
和Width
,然后单击Add 2 Constraints
。
since约束将显示为红色,因为我们尚未完成约束。 没关系。
👉抓住图像视图的右手柄之一,然后向左拖动,使其占用不到单元格宽度的一半。 我们只需要粗略地定位,因为完成后约束将使所有内容对我们而言都是准确的。
6.添加标签
👉单击Library
按钮。 在搜索字段中输入label
。
👉将“ Label
从“对象库”列表拖动到图像视图右侧的单元格。
👉重复此过程,将第二个标签添加到单元格中,紧靠第一个标签。 再次重复以添加第三个标签。
👉将相应标签的文本更改为[Text]
, [Detail Text]
和[Tertiary Text]
。
👉选择Text
标签。
👉在“属性”检查器中,设置:
-
Headline
的Text Style
。 -
Lines
数为2
。
👉选择Detail Text
标签。
👉设置:
-
Caption 1
的Text Style
Caption 1
。 -
Color
为Dark Gray Color
。 -
Lines
数为5
。
👉选择Tertiary Text
标签。
👉设置:
-
Body
的Text Style
。 -
Color
为Dark Gray Color
。
7.添加一个按钮
这将是我们的产品单元,我们希望在其中向用户提供购买产品的能力。 为此,我们将添加一个“购买”按钮。
👉单击Library
按钮。 在搜索字段中输入bu
。
👉将Button
对象从“库”中拖动到“ Tertiary Text
标签右侧的单元格中。
👉仍然选择按钮,然后在“属性”检查器中,将标题从“ Button
更改为“ Buy
然后单击“ Return
(在键盘上)。
8.堆栈视图
👉在仍然选择Buy
按钮的情况下,按住Shift键单击“ Tertiary Text
标签,因此两者都被选中。 单击画布底部的“ Embed In
按钮,然后从弹出菜单中选择“ Stack View
”。
👉在刚刚创建的堆栈视图中,仍处于选中状态,请检查属性是否与下面的属性匹配,并进行必要的更改以使其匹配。
👉按住Shift键单击其他两个标签,以便与水平堆栈视图一起选择它们。
👉单击画布底部的“ Embed In
按钮,然后从弹出菜单中选择“ Stack View
”。
👉在刚刚创建的堆栈视图中,仍处于选中状态,请检查属性是否与下面的属性匹配,并进行必要的更改以使其匹配。
👉仍然选择标签的垂直堆叠视图,在图像视图上按住Shift键并单击。 单击“ Embed In
按钮,然后再次选择“ Stack View
。
👉修改任何需要的属性以匹配这些设置。
9.限制利润
👉在仍然选择外部堆栈视图的情况下,单击画布下方的“ Add New Constraints
按钮。 在弹出窗口中,打开“ Constrain to margins
并为顶部的四个边约束中的每个Constrain to margins
输入0
。
👉单击Add 4 Constraints
按钮。
10. NibTableViewCell的子类
👉在项目导航器中选择ProductTableViewCell.swift
文件。
👉将ProductTableViewCell.swift
文件编辑为:
- 删除占位符
func
代码。 - 添加
import BFWControls
。 -
NibTableViewCell
类更改为NibTableViewCell
。 - 在
class
之前添加@IBDesignable
。
12.更新情节提要中的单元格
👉在项目浏览器中选择Main.storyboard
。 滚动到“产品”场景。 选择两个单元格。 选择身份检查器。
Class单击“ Class
弹出菜单,然后选择“ ProductTableViewCell
。
👉选择尺寸检查器。 将所选单元格的“ Row Height
”从“ Default
更改为190
,或将其看起来像预览一样好。
您还可以单独调整单元格的高度,因为它只是一个预览,我们将在视图控制器中覆盖运行时单元格的高度。
👉在第一个单元格上单击一次。 在“属性”检查器中,输入“ Tertiary Text
为$98
。
👉同样,对于第二个单元格,将“ Tertiary Text
输入为$75
。
13.查看控制器单元的高度
clicking通过单击标题栏中的黄色图标来选择表视图控制器。
👉在Identity Inspector中的“ Class
字段中,键入Adj
然后从弹出菜单中选择AdjustingTableViewController
。 点击Return
或Tab
(在键盘上)。
👁Xcode应该自动以BFWControls
输入Module
,因为它BFWControls
该类所在的位置。
👉切换到“属性”检查器。 在“ Adjusting Table View Controller
部分中,将“ Intrinsic Height Cells
从“ Default
更改为“ On
。
👉运行应用程序。 切换到Products
选项卡。 确认单元格的高度调整为适合标题的两行和细节的五行。
14.提交更改
如您之前所做的:
- from从“
Source Control
菜单中选择“Commit Changes
”。 - 👉输入描述,例如:
Products: custom cell and auto adjusting heights
- 👉单击
Commit
按钮。
15.回顾
现在,我们的产品单元格具有文本样式,各种字体大小,“购买”按钮和自动调整单元格高度的功能。
16.接下来呢?
👏如果您喜欢这篇文章,请用“拍手”按钮鼓掌。
🚦遵循“构建像Lego这样的应用程序”出版物。
⁉️如果您有任何疑问或意见,请在下面添加回复。
Tu在教程13中,我们将为聊天场景创建自定义单元。
through浏览“教程索引”以查看本系列中的其余教程(如果尚未完成)。