Object-c Swift書き換え

material designがObject-Cでかかれていた

@property(nonatomic) MDCTextField *usernameTextField;

//TODO: Instantiate Text Fields
self.usernameTextField = [[MDCTextField alloc] initWithFrame:CGRectZero];


self.usernameTextField.translatesAutoresizingMaskIntoConstraints = NO;
self.usernameTextField.delegate = self;
self.usernameTextField.clearButtonMode = UITextFieldViewModeUnlessEditing;
self.usernameTextField.backgroundColor = self.scrollView.backgroundColor;
[self.scrollView addSubview:self.usernameTextField];

Swiftで書き換える

変数の初期化

//usernameTextFieldのインスタンスがあれば利用 なければ{ 以下のクロージャーで生成
  let usernameTextField: MDCTextField = {

//usernameにMDCTextField型でフレームは .zeroを入れる .zeroとは x:0,y:0, width: 0, height: 0 のgetterである 以下に写真を添付
        let username = MDCTextField(frame: .zero)

//生成した usernameを返却
        return username
    }()
    

f:id:happy_teeth_ago:20191028003205p:plain

オプショナルバインディング? だったかな便利な処理
呼び出すまでインスタンスは生成されない
生成済みであれば、それをそのまま返却する
ここではクロージャーを利用