Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Clean Code
- uiscrollview
- Protocol
- swift documentation
- 스위프트
- 리펙터링
- Xcode
- clean architecture
- MVVM
- collectionview
- Observable
- UITextView
- rxswift
- ios
- swiftUI
- ribs
- 클린 코드
- 리펙토링
- 리팩토링
- 애니메이션
- HIG
- combine
- uitableview
- Human interface guide
- map
- Refactoring
- SWIFT
- tableView
- RxCocoa
- UICollectionView
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] SideMenu 사용 방법 (SideMenu 프레임워크) 본문
프레임워크
pod 'SideMenu'
SideMenu로 사용 할 화면 추가
- 코드로 화면 초기화를 위해, 관련 protocol정의
import UIKit
protocol StoryboardInitializable {
static var storyboardName: String { get set }
static var storyboardID: String { get set }
static func instantiate() -> Self
}
extension StoryboardInitializable where Self: UIViewController {
static func instantiate() -> Self {
if #available(iOS 13.0, *) {
let storyboard = UIStoryboard(name: storyboardName, bundle: Bundle.main)
return storyboard.instantiateViewController(identifier: storyboardID) { (coder) -> Self? in
return Self(coder: coder)
}
} else {
let storyboard = UIStoryboard(name: storyboardName, bundle: Bundle.main)
let vc = storyboard.instantiateViewController(withIdentifier: storyboardID) as! Self
return vc
}
}
}
- SideMenu로 사용할 화면 추가
import UIKit
class MenuVC: UIViewController, StoryboardInitializable {
static var storyboardName: String = "Main"
static var storyboardID: String = "MenuVC"
}
SideMenu 프레임워크를 사용하여 세팅
- SideMenu화면이 세팅 될 SideMenuNavigationController 설정
- SideMenu의 속성(닫힘, alpha, width)은 SideMenuNavigationController객체로 접근
// ViewController
override func viewDidLoad() {
super.viewDidLoad()
let menuVC = MenuVC.instantiate()
let sideMenuNav = SideMenuNavigationController(rootViewController: menuVC) // rootViewController에는 SideMenu화면 VC를 삽입
setUpSideMenuNavigationVC(vc: self, menuNavVC: sideMenuNav)
}
// sideMenu속성은 SideMenuNav객체로 지정
func setUpSideMenuNavigationVC(vc: ViewController, menuNavVC: SideMenuNavigationController) {
menuNavVC.statusBarEndAlpha = 0
menuNavVC.dismissOnPresent = true
menuNavVC.dismissOnPush = true
menuNavVC.enableTapToDismissGesture = true
menuNavVC.enableSwipeToDismissGesture = true
menuNavVC.enableSwipeToDismissGesture = true
menuNavVC.sideMenuDelegate = vc
menuNavVC.menuWidth = 238
menuNavVC.presentationStyle = .menuSlideIn
SideMenuManager.default.leftMenuNavigationController = menuNavVC
SideMenuManager.default.leftMenuNavigationController?.setNavigationBarHidden(true, animated: true)
}
- delegate: SideMenu밑에 깔려있는 ViewController에 삽입 (위에서 menuNavVC.sideMenuDelegate = vc)부분
extension ViewController: SideMenuNavigationControllerDelegate {
func sideMenuWillAppear(menu: SideMenuNavigationController, animated: Bool) {
}
func sideMenuDidAppear(menu: SideMenuNavigationController, animated: Bool) {
}
func sideMenuWillDisappear(menu: SideMenuNavigationController, animated: Bool) {
}
func sideMenuDidDisappear(menu: SideMenuNavigationController, animated: Bool) {
}
}
- 사용: SideMenuManager.default.leftMenuNavigationController로 SideMenuNav 접근
@IBAction func sideMenu(_ sender: Any) {
let sideMenu = SideMenuManager.default.leftMenuNavigationController!
present(sideMenu, animated: true)
}
* 전체 소스코드 : github.com/JK0369/SideMenuSample
'iOS 응용 (swift)' 카테고리의 다른 글
[iOS - swift] UIImage의 중앙에 text 추가하기 (0) | 2021.01.05 |
---|---|
[iOS - swift] 정규식 (Regex) (0) | 2021.01.05 |
[iOS - swift] BaseViewController (Reachability, toast, dialog, loading - JGProgressHUD, setting, back pressed) (0) | 2020.12.19 |
[iOS - swift] 서버 푸시 (remote notification), APNs (Apple Push Notification service) (0) | 2020.12.17 |
[iOS - swift] 앱을 첫 번째 실행 시, keychain정보를 삭제하는 방법 (0) | 2020.12.17 |
Comments