UI 작업을 하다보면, 화면 상단 왼쪽에 앱의 로고를 위치시키는 경우가 많다. 협업을 할 경우, 위치를 고정시키기 위해 Navigation Bar에 로고를 넣기로 했다.
우선 Bar에 들어갈 ImageView를 만들어주어야 한다.
let navigationLogoImageView = UIImageView()
navigationLogoImageView.translatesAutoresizingMaskIntoConstraints = false
navigationLogoImageView.image = UIImage(named: "BabTube_Logo")
navigationLogoImageView.contentMode = .scaleAspectFill
navigationLogoImageView.layer.masksToBounds = true
navigationLogoImageView.widthAnchor.constraint(equalToConstant: 95).isActive = true
navigationLogoImageView.heightAnchor.constraint(equalToConstant: 25.5).isActive = true
ImageView의 frame을 이용해서 크기를 정하는 경우가 있는데, frame은 autolayout 보다 우선순위가 낮아서 제대로 적용되지 않는다.
navigationLogoImageView.frame = CGRect(x: 0, y: 0, width: 95, height: 25.5)
보통 다음과 같은 메서드를 주로 사용한다.
UIBarButtonItem(image: <#T##UIImage?#>, style: <#T##UIBarButtonItem.Style#>, target: <#T##Any?#>, action: <#T##Selector?#>)
그렇지만 단순히 ImageView만 넣을것이기 때문에 cutomView 매개변수를 사용한다.
navigationItem.leftBarButtonItem = UIBarButtonItem(customView: navigationLogoImageView)