네비게이션 바 버튼에 이미지 넣을 때는 항상 pdf 파일로 변환해주자...
내 정신건강을 위해서..
여러개의 바 버튼 추가
let buttonStrings = ["edit", "filter"]
var buttons: [UIBarButtonItem] = []
for string in buttonStrings {
let button = UIButton(frame: CGRect(x: 0, y: 0, width: 30, height: 24))
//set image for button
let image = UIImage(named: string)
image?.withRenderingMode(.alwaysTemplate)
image?.resizeImage(size: CGSize(width: 24, height: 24))
button.setImage(image, for: .normal)
//버튼 액션추가
button.addTarget(self, action: #selector(fbButtonPressed), for: .touchUpInside)
// button.tintColor = .white
//set frame
buttons.append(UIBarButtonItem(customView: button))
}
Swift
복사
//이미지 리사이징이 꼭 필요하다!!
extension UIImage {
func resizeImage(size: CGSize) -> UIImage {
let originalSize = self.size
let ratio: CGFloat = {
return originalSize.width > originalSize.height ? 1 / (size.width / originalSize.width) :
1 / (size.height / originalSize.height)
}()
return UIImage(cgImage: self.cgImage!, scale: self.scale * ratio, orientation: self.imageOrientation)
}
}
Swift
복사
바 아이템 버튼 추가의 모든 것.
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//create a new button
let button = UIButton(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
button.setImage(UIImage(named: "bg pay")?.resizeImage(size: CGSize(width: 30, height: 30)), for: .normal)
button.addTarget(self, action: #selector(fbButtonPressed), for: .touchUpInside)
let barButton = UIBarButtonItem(customView: button)
//assign button to navigationbar
self.navigationItem.rightBarButtonItem = barButton
}
//This method will call when you press button.
@objc func fbButtonPressed() {
print("Share to fb")
}
}
Swift
복사
Back Bar Button 커스텀시
반드시 navigation 의 root 가 되는 뷰에서 실행시킬것
let backBarButtonItem = UIBarButtonItem(title: "Zedd", style: .plain, target: self, action: nil)
self.navigationItem.backBarButtonItem = backBarButtonItem
Swift
복사
정보
Navigation Item → Navigation Bar 의 콘텐츠를 표시하는 "객체"다.
•
View Controller 가 전환될 때마다 Navigation Bar 는 하나의 " 공동 객체 " 지만, Navigation Item 은 각각의 View Controller 가 가지고 있는 Property 이다.
•
보통 Navigation Bar 에서 보여지는 중앙 타이틀, 좌측 바 버튼, 우측 바 버튼 등이 Navigation Item 의 프로퍼티다. *
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action: #selector(addTapped))
Swift
복사
바 버튼은 네비게이션 바에 종속되지 않는다. UINavigationItem 에 속한다.
let add = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped))
let play = UIBarButtonItem(title: "Play", style: .plain, target: self, action: #selector(playTapped))
//여러개의 바버튼 아이템 추가 가능.
navigationItem.rightBarButtonItems = [add, play]
Swift
복사
네비게이션 바 뒤로가기 버튼 커스텀
navigationItem.backBarButtonItem = UIBarButtonItem(title: "Cancel", style: .plain, target: nil, action: nil)
Swift
복사
백 바 버튼 아이템에 할당해주면 됨.
액션도 정의 가능
let yourBackImage = UIImage(named: "back_button_image")
self.navigationController?.navigationBar.backIndicatorImage = yourBackImage
self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = yourBackImage
self.navigationController?.navigationBar.backItem?.title = "Custom"
Swift
복사
바 아이템에 액션 추가하기
func backButtonPressed(sender:UIButton) {
navigationController?.popViewControllerAnimated(true)
}
Swift
복사
바 아이템에 커스텀 뷰 추가하기
var progressView = UIProgressView(progressViewStyle: .default)
progressView.sizeToFit()
let progressButton = UIBarButtonItem(customView: progressView)
Swift
복사
바 아이템에 이미지 추가하기
1.
var backImg: UIImage = UIImage(named: "fb.png")!
fbButton.setBackgroundImage(backImg, forState: .Normal, barMetrics: .Default)
2.
barButtonItem.image = UIImage(named: "image")
Swift
복사
Swift
복사