UIViewはUIを構成する基本的なビルディング・ブロックで、ひとつ以上のsubviewを持つことが出来ます。また、UIResponderのサブクラスであり、touchやその他のeventに反応することが出来たり、gesture recognizerを設定することが出来ます。
UIViewControllerのviewプロパティはRoot Viewを保持します。viewプロパティの初期値はnilです。view == nilの時にviewを呼び出すと、UIViewControllerにより自動的にloadView()メソッドが呼ばれます。
boundsは、自身のcoordinate system(0, 0)にrelativeな位置(x, y)とサイズ(width, height)で表されるrectangleです。
frameは、自身のsuperviewにrelativeな位置(x, y)とサイズ(width, height)で表されるrectangleです。
override func viewDidAppear(_ animated: Bool) {
print(view.bounds) // CGRect(x: y: width: height:)がプリントされる
print(view.bounds.size) // CGSize(width: height:)がプリントされる
print(view.frame) // CGRect(x: y: width: height:)がプリントされる
print(view.frame.size) // CGSize(width: height:)がプリントされる
}
// this method happens after all the layouts has been done. このメソッドは全てのレイアウト後に呼ばれる
override func layoutSubviews() {
super.layoutSubviews()
let layer = sampleImageView.layer
layer.cornerRadius = 30
}