적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

반응형

Swift iOS 앱 개발/실전 Swift 27

UICollectionView dynamic cell size

collectionView가 로딩될 때, UICollectionViewDelegateFlowLayout 에서 cell의 size를 미리 지정해줘야 되는데, 높이가 고정값이 아닌 변수로 설정을 하고싶었다. cell 내 view 혹은 stackView의 높이가 수치로 명확하게 선언이 되는 것들은 systemLayoutSizeFitting 를 사용하여 간단하게 처리가 가능했다. func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { let cell = self.collectionView(..

[Swift iOS] Custom Scrollable Sticky Tab Bar 만들기

앱에서의 tab bar 는 보통 하나의 스크롤 형식이 아니라 tab 별로 다른 화면을 보여주도록 되어있는 경우가 많다. 탭 클릭 한 번으로 원하는 위치로 스크롤이 되는 방식은 보통 웹으로 구현할 때 많이 쓰이는 방식으로, Native 앱에서는 따로 제공하는 라이브러리도 없고 구현이 쉽지 않아 custom으로 직접 scrollable 형식의 sticky tab bar 를 만들어보게 되었다. 그리하여 직접 만들어본 tab bar 프로토타입. 코드는 여기에 👉🏻 https://github.com/hongssup/StickyHeaderTab 1) UICollectionView 이용해 base 화면 생성하기 collectionView 자체가 scrollView의 특성을 가지고 있기 때문에, 우선 UICollect..

[Swift iOS] UICollectionView - Storyboard

UICollectionView 사용하기 까다롭네.. 내 기억이 맞다면 xib 파일 사용하면 collectionview 내에 cell을 바로 넣어서 설정해줄 수 없고 번거롭게도 따로 cell xib 설정을 해줘야 한다고 알고 있다. 그래서 이번엔 스토리보드로 사용해본 UICollectionView 1. 기본 UICollectionView 세팅하기 우선 스토리보드에 UICollectionView를 추가한 후, 다음과 같이 오토 레이아웃을 설정해준다. 그리고 중요한 것. Automatic으로 기본 설정되어있는 Estimate Size를 None으로 바꿔주어야 한다. (custom cell 만들고 크기 설정 다 해줘도 반영이 안되서 이거 때매 몇시간 날려뚬 ㅠ ) 컬렉션뷰를 @IBOutlet으로 연결해주고, U..

[실전 Swift] AVPlayer.seek(to:time) frame move back and forth 동영상 프레임 이동

iOS Swift에서 AVPlayer를 활용한 동영상 재생 및 원하는 지점으로 이동하는 법. AVPlayer : a controller object used to manage the playback and timing of a media asset. 다양한 포맷의 동영상과 소리를 같이 재생해주는 동영상 재생 컨트롤러 Player 생성 url로 동영상을 받아올 수도 있고, 실제 파일을 지정해줄 수도 있다. 동영상 재생 컨트롤 func play() / func pause() / var rate: Float 동영상 시간 탐색 func currentTime() 은 현재 동영상 파일의 현재 재생 시간을 알려준다. (AVPlayer에 사용되는 시간들은 CMTime 형식) 원하는 지점 찾고 이동하기 Seeking T..

[실전 Swift] Disable multiple touch on UICollectionView 다중 터치 방지

컬렉션뷰에서 셀을 터치하면 다음 화면으로 넘어가는 시스템에서, 로딩이 되는 잠깐 동안 터치를 더 했을 경우 창이 여러개가 열리는 문제가 발생했다. 이는 Boolean을 사용하여 아주 간단하게 해결할 수 있다. var cellTapped: Bool = false 선언해준 후 override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { if cellTapped { return } cellTapped = true } didSelectItemAt indexPath 에서 cellTapped = true 선언해주고, 한 번 더 터치 했을 때 실행되지 않도록 return 해준다. 그리고 추후..

728x90
반응형