不容易错误的 cell 识别码写法

在构建 cell 时,可以将 cell 的识别码设置为其自定义类别的名称。目的是可以清楚的指定识别码并取出Cell,如下所示:

let cell = tableView.dequeueReusableCell(withIdentifier: "RestaurantDetailIconTextCell", for: indexPath) as! RestaurantDetailIconTextCell


如果使用 String(describing: RestaurantDetailIconTextCell.self), 则会回传类别的名称(也就是 「RestaurantDetailIconTextCell 」)

let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: RestaurantDetailIconTextCell.self), for: indexPath) as! RestaurantDetailIconTextCell

那这两种方法哪种好呢?

用第一段代码,是将 cell 的识别码固定写入。如果将识别码打错,Xcode 编译也不会出现任何错误。只有在运行 App 的时候才会发现出现问题。

使用第二段代码,如果打错了类别的名称(比如打成 RestaurantDetailIconTxtCell.self ),Xcode 会马上提示错误。所以更加推荐使用第二种代码。

UIImage View 的主要内容模式 (Content Mode)

UIImageViewUIView 的子类别,其中存在一个内容模式属性用来指定视图如何調整其内容。以下是三个常用的缩放模式:

  • Scale to Fill (默认)
  • Aspect Fit
  • Aspect Fill

UIImageView 默认是 Scale to Fill 模式, 在此模式下,系统会拉伸图片使其符合设定尺寸大小。图片的长宽比会随着拉伸而发生改变。

Aspect Fill 是比较推荐的模式,在这个模式下,系统会等比例缩放图片,来使其符合尺寸大小。这个模式有时候会导致图片重叠到别的视图,这时候可以去图片视图的属性检阅器里,在 Drawing 区块下勾选 「Clip to Bounds」 (修剪至边界)。这样可以避免图片延伸到预期视图之外。

Segue 的四种形态

  • Show:内容会被推到目前视图控制器堆叠的上方。在导览列上会显示一个返回按钮,用来导览回原来的视图控制器。一般开发者会使用这个作为导览控制器的 Segue 型态。
  • Show Detail:和 Show 样式类似,不过细节(或者是目标)视图控制器的内容将在目前视图控制器堆叠的最上方。举例来说,如果你在 App 中选取 Show Detail 型态来取代 Show 型态,在细节视图中便不会有导览列与返回按钮。
  • Present Modally:以强制回应(Modal)型态呈现。使用这个型态,细节视图控制器将会以动画方式从底部出现后并充满整个屏幕,之前的视图会向后避让。Present Modally Segue 的较佳范例是 iOS 内置的日历 App 的右上角的“新建日程”功能。当你在 App 中点选“+”按钮,它会从底部带出一个“新建日程”画面。
  • Present as popover:将内容以固定点弹跳框来呈现内容至目前视图中。弹跳框在 iPad App 中很常见。

Deprecated Segues 分类下的 “Push、Modal、Popover、Replace” 四个动作已经不推荐使用。因为在未来的 Swift 版本中可能会移除它。