SeSAC_iOS_Day 54 | TIL
📂 AutoLayout
✔️ Frame Based Layout
AutoLayoutを使用する前に、常にFrame Based Layout(デバイスのサイズと割合がほぼ同じ場合)
✔️ Autoresizing Mask
✔️ NSLayoutConstraints, Anchor
以前ブットキャンプで少し勉強したことがあるので、理解しやすいです!キーワードには、前にアクションで整理したリンクもあります.
self.view.safeAreaLayoutGuide
を記入すれば-レイアウトを決定する前にaddSubViewを実行する必要があります
- subView.翻訳自動調整MaskIntoConstraaint=false設定
:自動調整タスクのConstraintsへの変換を防止
:このプロパティは、コンストレイントが設定されている場合に自動レイアウトの設定を再試行することはできません.~を覆うことができます
:IB(Storyboard)ではdefaultがfalse(値を別途変更する必要はありません)、コードではdefaultがtrueのためfalse
[titleLabel, captionLabel, activateButton].forEach { subView in
subView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(subView)
}
.isActive = true
を1つずつ記入できますが、複数適用する必要がある場合は、view.addConstraints([top, centerX, width, height])
を記入して一括適用できます.NSLayoutConstraint.activate([
activateButton.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
activateButton.widthAnchor.constraint(equalToConstant: 300),
activateButton.heightAnchor.constraint(equalToConstant: 50),
activateButton.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor)
])
✔️ Snapkit
ついに伝説のSnapkitを使いました!NSLayoutConstraintは確かにコードが長くなった気がしますが、Snapkitを使うと本当にコードが減った気がします!
translateAutoresizingMaskIntoConstraints
の値をfalseに設定するため、値を変更する必要はありません.moneyLabel.snp.makeConstraints { make in
make.centerX.equalTo(view)
make.centerY.equalTo(view)
make.width.equalTo(300)
make.height.equalTo(80)
}
activateButton.snp.makeConstraints {
$0.leadingMargin.equalTo(view)
$0.trailingMargin.equalTo(view)
$0.bottom.equalTo(view.safeAreaLayoutGuide)
$0.height.equalTo(view).multipliedBy(0.1)
}
redView.snp.makeConstraints { make in
// 레이아웃이 덮어쓰기 되겠지~ 라고 생각하면 안됨. 충돌할 확률이 높음
make.edges.equalToSuperview().inset(100)
//make.bottom.equalTo(-400)
}
// 하나의 constraint만 바꾸고싶을 때 updateConstraint 사용
redView.snp.updateConstraints { make in
make.bottom.equalTo(-400)
}
redView.addSubview(blueView)
blueView.backgroundColor = .blue
blueView.snp.makeConstraints { make in
// offset은 기존 view에 다 더해주는것... 이동시켜줌..~
make.edges.equalToSuperview().offset(50)
}
let moneyLabel = UILabel()
override func viewDidLoad() {
super.viewDidLoad()
moneyLabel.text = "47200원"
moneyLabel.backgroundColor = .yellow
}
let moneyLabel: UILabel = {
let label = UILabel()
label.backgroundColor = .yellow
label.text = "47,200원"
return label
}()
📂 AppDelegate, SceneDelegate
✔️ WWDC 19: Architecting Your App for Multiple Windows
Reference
この問題について(SeSAC_iOS_Day 54 | TIL), 我々は、より多くの情報をここで見つけました https://velog.io/@hope1053/SeSACiOSDay-54-TILテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol