Quand j'ai implémenté CustomView
dans le code, ma compréhension de la méthode init
était ambiguë, donc je la posterai comme un rappel.
【Xcode】Version 12.0.1 【Swift】Version 5.3
CustomView.swift
import UIKit
class CustomView: UIView {
var imageView: UIImageView!
//Explication détaillée ①
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
//Explication détaillée ②
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
private func setup(){
let iWidth: CGFloat = 200
let iHeight: CGFloat = 200
let posX: CGFloat = (self.frame.width - iWidth)/2
let posY: CGFloat = (self.frame.height - iHeight)/2
imageView = UIImageView(frame: CGRect(x: posX, y: posY, width: iWidth, height: iHeight))
imageView.image = UIImage(named: "hoge")
self.addSubview(imageView)
}
}
ViewController.swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let customView = CustomView()
customView.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height)
self.view.addSubview(customView)
}
}
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
init? (Codeur aDecoder: NSCoder)
est défini dans le protocole NSCoding
, qui est implémenté dans la classe UIView
, il doit donc être implémenté également dans la sous-classe.Recommended Posts