哪种定制 UI 方式更好?

Which customized UI way is better?

我几乎是程序化的新手 UI。

我一直在为我的项目创建一些自定义 UI 组件,但是当我查看其他人的项目时,我发现我创建 UI 组件的方式与他们的不同。

代码完全相同,但方式不同。

这两个代码有什么区别?

func makeLabel(withAlignment alignment: NSTextAlignment,
               withFontSize fontSize: CGFloat) -> UILabel {
  
  let label = UILabel()
  label.textAlignment             = alignment
  label.font                      = UIFont.systemFont(ofSize: fontSize,
                                                     weight: .bold)
  
  label.textColor                 = .label
  label.adjustsFontSizeToFitWidth = true
  label.minimumScaleFactor        = 0.9
  label.lineBreakMode             = .byTruncatingTail

  label.translatesAutoresizingMaskIntoConstraints = false
  
  return label
}
  init(textAlignment: NSTextAlignment,
       fontSize: CGFloat) {
    super.init(frame: .zero)
    
    self.textAlignment             = textAlignment
    self.font                      = UIFont.systemFont(ofSize: fontSize,
                                                       weight: .bold)
  }
  
  private func configure() {
    self.textColor                 = .label
    
    self.adjustsFontSizeToFitWidth = true
    self.minimumScaleFactor        = 0.9
    self.lineBreakMode             = .byTruncatingTail
    
    self.translatesAutoresizingMaskIntoConstraints = false
    
  }

在我的 VC 中调用它们也是一样的。

所以问题是哪种方式更适合我创建自定义 UIs? 这两种技术有什么优缺点吗?

第一个只是一个帮手,你创建了一个 Return 一个 UILabel

的函数

第二个是CustomView,它可以包含一个标签,但也可以由多个元素组成,例如图像+标签

在自定义视图中,您还可以覆盖 drawRect 等方法或添加一些其他组件:例如

var isSelected {
  didSet {
    //do something
  }
}