적당한 고통은 희열이다

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

반응형

분류 전체보기 568

[Swift iOS] 캘린더 라이브러리 _FSCalendar 설치 및 사용하기

달력 기능이 필요해서 검색하다가 FSCalendar를 발견했는데, 나름 customizing 하기에도 좋아보이고 정보도 꽤 있는 것 같아서 이 라이브러리를 받아와 사용하기로 했다. 참고 : FSCalendar Github 1. Cocoapods를 이용해 터미널에서 설치 pod 'FSCalendar' 2. Calendar 추가 1) 스토리보드 혹은 xib 파일 사용 시 View를 추가 후 Custom Class를 FSCalendar로 설정해준다. 그리고 코드에 IBOutlet으로 연결 및 대리자 위임해주기 import UIKit import FSCalendar class CalendarViewController: UIViewController, FSCalendarDelegate, FSCalendarData..

[Swift iOS] Bottom Navigation Bar 만들기 + switch views

토이 프로젝트 첫번째 과제 UITabBarController 사용하여 Bottom Navigation Bar 만들기 MaterialComponents를 이용하여 BottomNavigation을 만들어보았다. 아이콘 이미지는 fontawesome에서 받아오기 ㅎㅎㅎ *swift에서의 fontawesome 사용법은 fontawesome.swift 참고 이렇게 자꾸 외부 라이브러리의 UI기능들을 받아와서 만들어도 되는가 싶지만 뭐 편리하고 빠르게 만들어볼 수 있으니 우선은 감사합니다 하고 쓰겠다. 1. Xcode 프로젝트 생성 2. 코드로 UI 작성하기 위해 Storyboard 없애주기 3. podfile에 'MaterialComponents'와 'FontAwesome.swift' 추가해주고 pod insta..

[실전 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] higher order function?

higher order function을 통해 복잡한 코드를 간결하게 줄일 수 있다. for item in result.prefixes { self.files.append(item.name) } self.files = result.prefixes.map { item in item.name } self.files = result.prefixes.map { $0 } 위 셋은 다 동일한 기능을 수행한다. Higher order function이란? 고차함수란 전달 인자로 함수를 전달받거나, 함수 실행의 결과로 함수를 리턴하는 함수이다. 배열(Array) 타입에는 유용한 고차함수들( sorted / map / filter / reduce )이 제공된다.

[실전 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 해준다. 그리고 추후..

[실전 Swift] How to update UI?

실시간으로 변하는 현재 프레임을 받아와서 화면에 표시해주려고 했는데, init()이나 viewDidLoad()는 따로 업데이트가 되지 않으니 extension으로 만들어준 SCNSceneRendererDelegate에서 UILabel()을 업데이트 하고자 하여 텍스트를 바로 설정해주었더니, UILabel.text must be used from main thread only 라는 에러 메세지가 떴다. UI 인스턴스들을 업데이트 하고싶을 경우! DispatchQueue.main.async { 실행할 코드 } 업데이트를 실행하는 메서드 안에 DispatchQueue.main.async {} 를 넣고 그 안에 원하는 UI 업데이트 코드를 작성해주면 화면에 잘 업데이트된다! + 이거 말고도 OperationQu..

728x90
반응형