Buttom sheet( panmodal)

2024. 3. 2. 17:04·앱/Swift

스토리보드를 기준으로 바텀시트를 직접 만들려고 햇는데 잘 안되서, 그냥 외부라이브러리 쓰기로 했다.

panmodal 이라는 오픈소스 라이브러리이다.

패키지 매니저를 통해서 해당 오픈소스를 다운받을수 있다.

1. 패키지 매니저를 통해서 다운

https://github.com/slackhq/PanModal.git

Untitled.png

다운햇으면 사용할 부분에 당연하게도, import해주자.

2. 모달해줄 뷰컨트롤 만들기

뷰컨트롤러의 종류는 크게 3개가 있다.

  1. 뷰 컨트롤러
  2. 콜렉션뷰 컨트롤러
  3. 테이블뷰 컨트롤러

해당 컨트롤러를 스토리보드에서 만들면된다.

나는 콜렉션뷰로 만들었다.

3. 콜렉션뷰 설정하기

기존의 콜랙션뷰와 동일하게 진행하면 되는데, 처음부터 콜렉션뷰 컨트롤러자체 내부에서 datasource와 delegate가 내장되어있기 때문에 따로, extension해줄필요는 없다.

3. 모달창 띄워주기

panModal에서는 라이브러리 자체 내부에서 presentPanModal() 를 제공한다.

해당 뷰컨의 값을 가져와야 하기 때문에 UIStoryboard로 해당 뷰컨을 가져와서 연결해준다.

let myItemVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: String(describing: MyItemCollectionViewController.self)) as! MyItemCollectionViewController
presentPanModal(myItemVC)

2. PanModal 설정해주기

팬모달창으로 사용할 뷰컨트롤러를 만들고, 거기에서 동일하게 그냥 화면을 구성해준다.

이후 해당 뷰에서 extension을 통해 PanModalPresentable이라는 프로토콜을 채택해준다.

여기에서 해당 모달창의 설정을 해주게 된다.

extension YourViewController: PanModalPresentable {
		var panScrollable: UIScrollView?{
        return self.collectionView
    }
    var shortFormHeight: PanModalHeight{
        return .contentHeight(300)
    }
    var longFormHeight: PanModalHeight{
        return .maxHeightWithTopInset(40)
    }
}

이러한 기능은 usage를 찾아보면된다.

link_preview

반응형

'앱 > Swift' 카테고리의 다른 글

Swift) Notification Center 이란, 쓰는법  (0) 2024.03.02
Swift) Draw Cycle에 대한 이해  (0) 2024.03.02
Swift) CollectionView CompositionalLayout-2  (0) 2024.03.02
Swift) 컬렉션뷰 (CollectionView) 레이아웃 -1  (0) 2024.03.02
앱사이즈 최적화 하는 5가지 방법  (0) 2024.02.25
'앱/Swift' 카테고리의 다른 글
  • Swift) Notification Center 이란, 쓰는법
  • Swift) Draw Cycle에 대한 이해
  • Swift) CollectionView CompositionalLayout-2
  • Swift) 컬렉션뷰 (CollectionView) 레이아웃 -1
진ddang
진ddang
안녕하세요 진땅의 개발자 블로그 입니다. 피드백은 환영입니다. 깃헙 : https://github.com/it794613
    반응형
  • 진ddang
    맛동산이
    진ddang
  • 전체
    오늘
    어제
    • 분류 전체보기 (202)
      • 일기 그리고 목표 (1)
      • 웹 (20)
        • 리액트 (19)
      • 앱 (118)
        • Swift 문법 (15)
        • Swift (68)
        • SwiftUI (32)
        • 리액트 네이티브 (3)
      • CS (30)
        • 컴퓨터그래픽스 (8)
        • 운영체제 (6)
        • 네트워크 (16)
      • 알고리즘 (13)
        • 백준 (12)
        • 프로그래머스 (1)
      • 대외활동 (7)
        • ict한이음(2022.04) (2)
        • 멋쟁이 사자처럼 (5)
        • Apple Developer Academy (0)
      • 다양한 내용들 (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    대외활동
    스유
    swift concurrency
    운영체제
    위젯킷
    컴퓨터그래픽스
    TCA
    ReactorKit
    스위프트
    알고리즘
    dispatchqueue
    백준
    cs
    Protocol
    widget
    문법
    SwiftUI
    네트워크
    멋쟁이사자처럼
    멋사
    widgetkit
    영남대
    spritekit
    웹
    uikit
    리액트
    Swift
    composable architecture
    c++
    후기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
진ddang
Buttom sheet( panmodal)
상단으로

티스토리툴바