ios - 为 UIView 创建一个静态初始化器

标签 ios swift

<分区>

我正在尝试使用静态初始值设定项(例如 new)创建 UIView 的扩展。在我以前的 Objective-C 项目中,我将创建一个具有以下实现的类别:

+ (instancetype)autoLayout {
    UIView *view = [self new];
    view.translatesAutoresizingMaskIntoConstraints = NO;
    return view;
}

但我找不到快速执行此操作的方法。我想过创建一个普通的类函数:

class func autolayout() {
    let view = self.init()
    view.translatesAutoresizingMaskIntoConstraints = false

}

.. 但返回类型应该是什么?

最佳答案

在类函数上使用扩展时,您应该使用 Self,因为这意味着对象是 self 类型。

Self 可用于类函数和协议(protocol)。

//: Playground - noun: a place where people can play

import UIKit

extension UIView {

  class func autoLayout() -> Self {
    let view = self.init()
    view.translatesAutoresizingMaskIntoConstraints = false
    return view
  }

}

let view = UIView.autoLayout()

关于ios - 为 UIView 创建一个静态初始化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35378386/

上一篇:ios - XPath 在 Swift 中无法正常工作

下一篇:ios - clang : error: linker command failed: duplicate symbols for architecture x86_64

相关文章:

ios - 通过代码加热 iPhone

swift - swift 中的 Firebase 完成监听器

iOS - 在 MVP 的 Presenter 中单元测试异步私有(private)函数

string - Swift - 字符不是字符串的子类型

ios - 检测屏幕上的物体

ios - UIInputViewController 键盘在 iOS 8 中不显示

ios - CCAvenue“遇到错误。错误

iphone - 在 UIView 动画期间阻止用户输入

ios - 弹出 View 为空白

ios - 为什么我们在核心数据中使用performWait?