Search

네비게이션 바 버튼 커스텀

부제
카테고리
UIKit
세부 카테고리
커스터마이징
Combine 카테고리
최종편집일
2022/09/20 08:11
작성중
관련된 포스팅
생성 일시
2022/07/16 14:40
태그
네비게이션 바 버튼에 이미지 넣을 때는 항상 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
복사