작은 View Controller로 화면 조립
다음은 Toolbar입니다. 이외에도 WebView라는 간단한 화면입니다.
간단한 내용이지만 두 개올가미에 빠지다가 있기 때문에 다른 사람의 도움이 될 것으로 기대하고 메시지를 남긴다.
WebViewController
화면 이외의 코드가 없습니다.
밖에서 URL을 지정해서 읽는 기능 등 필요하면 각자 추가하세요🙇♂️
WebViewController.swift
import UIKit
import WebKit
class WebViewController: UIViewController {
var webView: WKWebView!
override func loadView() {
let configuration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: configuration)
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "https://google.com")!
let request = URLRequest(url: url)
webView.load(request)
}
}
ToolbarViewController
여기도 화면 이외의 코드가 없다.
ToolbarViewController.swift
import UIKit
class ToolbarViewController: UIViewController {
var toolbar: UIToolbar!
override func loadView() {
toolbar = UIToolbar(frame: .zero)
let back = UIBarButtonItem(title: "back", style: .plain, target: nil, action: nil)
toolbar.items = [back]
view = toolbar
}
}
조립 화면
import UIKit
class ViewController: UIViewController {
let toolbar = ToolbarViewController()
let webView = WebViewController()
override func loadView() {
view = UIView(frame: .zero)
webView.view.translatesAutoresizingMaskIntoConstraints = false
addChild(webView)
view.addSubview(webView.view)
webView.didMove(toParent: self)
toolbar.view.translatesAutoresizingMaskIntoConstraints = false
addChild(toolbar)
view.addSubview(toolbar.view)
toolbar.didMove(toParent: self)
let guide = view.safeAreaLayoutGuide
NSLayoutConstraint.activate([
webView.view.topAnchor.constraint(equalTo: view.topAnchor),
webView.view.leftAnchor.constraint(equalTo: view.leftAnchor),
webView.view.bottomAnchor.constraint(equalTo: toolbar.view.topAnchor),
webView.view.rightAnchor.constraint(equalTo: view.rightAnchor),
toolbar.view.leftAnchor.constraint(equalTo: view.leftAnchor),
toolbar.view.bottomAnchor.constraint(equalTo: guide.bottomAnchor),
toolbar.view.rightAnchor.constraint(equalTo: view.rightAnchor)
])
}
}
어려운 것도 없고!작은 View Controller는 View 하나만 있으면 AutoLayout 코드를 쓸 필요가 없습니다.
2,3개의 중첩을 누르면 AutoLayout 코드는 간단명료하고 알기 쉬운 범위 내에 유지됩니다.
따라서 xib를 사용하지 않아도 쓰기 쉬운 경우가 많다.
(반대로xib가 VC의 수량만 늘리면 관리가 좀 번거로울 수 있습니다.)
주의사항
뷰에서 직접 UIToolbar 설정
var UIViewController.view
에서 UIToolbar를 직접 설정하십시오.
아래와 같이 UIVIew에서 UIToolbaraddSubview
를 사용할 수 없습니다. override func loadView() {
view = UIView(frame: .zero)
toolbar = UIToolbar(frame: .zero)
toolbar.translatesAutoresizingMaskIntoConstraints = false
let back = UIBarButtonItem(title: "back", style: .plain, target: nil, action: nil)
toolbar.items = [back]
view.addSubview(toolbar)
NSLayoutConstraint.activate([
toolbar.topAnchor.constraint(equalTo: view.topAnchor),
toolbar.leftAnchor.constraint(equalTo: view.leftAnchor),
toolbar.bottomAnchor.constraint(equalTo: view.bottomAnchor),
toolbar.rightAnchor.constraint(equalTo: view.rightAnchor)
])
}
UIVIEW에 UIToolbar 구성을 추가하면 Toolbar의 Safe Area가 작동하지 않습니다!
아래와 같이 표시됩니다.
UIVIew Controller에서 self.view.translatesAutoresizingMaskIntoConstraints=false
위 샘플의 예는 WebViewController의 loadView()
self.view.translatesAutoresizingMaskIntoConstraints = false
기대한 대로 움직인다.
그런데 그걸 하면 WebView Controller가 모드로 표시되면 제대로 표시되지 않아요!
아마도 모드 디스플레이에서 마스크의 자동 변환을 자동으로 조정하는 것이 동작의 전제 조건일 것이다.
Toolbar라면 문제 없어요.
통일되면 길을 잃지 않기 때문에 UIVIew Controller를 만드는 쪽이 밖에서vc.view.translatesAutoresizingMaskIntoConstraints = false
사용자 정의 모양새를 정의합니다.
Reference
이 문제에 관하여(작은 View Controller로 화면 조립), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ryotapoi/items/ed12d2ce81ee20d43261
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
override func loadView() {
view = UIView(frame: .zero)
toolbar = UIToolbar(frame: .zero)
toolbar.translatesAutoresizingMaskIntoConstraints = false
let back = UIBarButtonItem(title: "back", style: .plain, target: nil, action: nil)
toolbar.items = [back]
view.addSubview(toolbar)
NSLayoutConstraint.activate([
toolbar.topAnchor.constraint(equalTo: view.topAnchor),
toolbar.leftAnchor.constraint(equalTo: view.leftAnchor),
toolbar.bottomAnchor.constraint(equalTo: view.bottomAnchor),
toolbar.rightAnchor.constraint(equalTo: view.rightAnchor)
])
}
Reference
이 문제에 관하여(작은 View Controller로 화면 조립), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryotapoi/items/ed12d2ce81ee20d43261텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)