tic-tac-toeゲームを作成するように指示されました。Constraints(IOS)のみを使用してカスタムUIViewを初期化する
要件は次のとおりです。
- のみを使用してMVC
- 表示プログラムで
- だけこのため
は、私が作成した制約に正方形のサイズを設定するビューボードクラスとスクエアクラスです。ボードクラスは、ほとんど背景色を持つUIViewだけです。初期化における私の主な問題。カスタムUIViewを使用するたびに、CGRectフレームで初期化する必要があります。インストラクターは、CGRect関数を使用してビューのフレームを直接設定するのではなく、制約があることを教えてくれました。
これは問題です。私は別のビューの中でボードを初期化しようとしています。ボードはUIViewのサブクラスなので、フレームを設定するにはHAVEが必要です。
フレームなしでUIViewを初期化して、渡されたパラメータからUIViewの制約のみを使用してサイズを設定できるようにするにはどうすればよいですか?
以下は私が今やっていることです。私は、フレームパラメータなしでそれを初期化したいと思いますが、それは必須です。このクラスを初期化し、別のviewcontrollerクラスのviewDidLoad
関数で使用します。私はパラメータとしてUIViewを渡し、その特定のビューに従って制約を調整したいと思います。私はボードのクラスを作成する場合
class Board: UIView {
init(frame: CGRect, view: UIView) {
super.init(frame: frame)
self.backgroundColor = .green
self.translatesAutoresizingMaskIntoConstraints = false
addConstraints(view: view)
}
func addConstraints(view:UIView){
NSLayoutConstraint(item: view,
attribute: .leading,
relatedBy: .equal,
toItem: view,
attribute: .leading,
multiplier: 1,
constant: 0).isActive = true
NSLayoutConstraint(item: view,
attribute: .trailing,
relatedBy: .equal,
toItem: view,
attribute: .trailing,
multiplier: 1,
constant: 0).isActive = true
NSLayoutConstraint(item: view,
attribute: .height,
relatedBy: .equal,
toItem: view,
attribute: .height,
multiplier: 1,
constant: 0).isActive = true
NSLayoutConstraint(item: view,
attribute: .width,
relatedBy: .equal,
toItem: view,
attribute: .width,
multiplier: 1,
constant: 0).isActive = true
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
は、私はクラスを初期化するとき、私は、パラメータとして渡されたview
に制約を設定したいと思います。私が使用しなければならない必要なフレームイニシャライザのために、挫折して、それは有効になりません。
これを回避する手段はありますか?
ありがとうございました!これは渡されるUIViewパラメータに従って制約を設定する方法ですか? –