Swift
[Swift] 네이버 지도 마커 클러스터링 (Quad Tree Clustering)
https://github.com/pablogsIO/PGClustering GitHub - pablogsIO/PGClustering Contribute to pablogsIO/PGClustering development by creating an account on GitHub. github.com 해당 깃허브는 애플 지도에 맞는 Quad Tree 알고리즘을 적용한 프로젝트이다. 하지만 네이버 지도용으로 커스터마이징 하고 싶었다. 그래서 직접 위 깃허브를 토대로 네이버 지도용으로 만들어보았다! 전체적인 로직은 비슷하지만 스크롤 시 마커가 수시로 다르게 클러스터링 되는 것이 불편하여 스크롤을 해도 같은 부분을 클러스터링 하도록 조금 더 개선을 하였다. (이 부분은 quad tree 알고리즘에 대한 이해도가..
[Swift] 하이라이트 슬라이드 뷰 만들기 (UICollectionView)
스크롤 시 가운데 셀이 하이라이트 되고 양 옆 셀을 클릭 시 스크롤 되는 커스텀 콜렉션 뷰를 만들었다. flowLayout을 커스텀하는데 있어 이해하는 시간이 좀 필요했다. 3D적으로도 생각하다보니 더 오래걸린 것 같다. 예시는 다음과 같다. 좌우 스크롤을 빠르게 하거나 옆 셀을 클릭했을 때의 예시 UICollectionViewFlowLayout 정의 import Foundation import UIKit class ZoomAndSnapFlowLayout: UICollectionViewFlowLayout { let activeDistance: CGFloat = 200 // 하이라이트 된 셀 크기 확대 비율 let zoomFactor: CGFloat = 0.2 override init() { super.i..
[Swift] OSLog 사용법
디버그를 진행 하면서 로그를 좀 더 간편하고 잘 보는 방법으로 OSLog 를 채택하였다. 많은 사람들이 눈에 띄게 하는 방법을 커스텀하여 사용하는 것들을 참고해 보았다. 앞으로도 활용하며 사용해보자. https://sunidev.tistory.com/m/77 [iOS/Swift] OSLog (with. extension) 항상 새 프로젝트를 시작할 때 로깅 라이브러리를 적용하고 있는데, Lumberjack을 사용하다가 김종권님 블로그에서 OSLog라는 로깅 프레임워크를 알게 되었어요. 📌 이번 글은 OSLog 개념과 적용부터 sunidev.tistory.com
[Swift] SkeletonView 사용법
작업을 하다가 최신 트렌드 UI/UX를 찾다 기본 인디케이터 보다 SkeletonView라는 것이 눈에 들어왔다. 다음 작업 때 실무에 적용하면 나름 이쁠 것 같다. https://ios-development.tistory.com/850 [iOS - swift] SkeletonView 스켈레톤 뷰 (로딩 뷰) 프레임워크 SkeletonView pod 'SkeletonView' 코드로 UI 작성에 편리를 위해 사용한 프레임워크 pod 'Then' pod 'SnapKit' Label 2개에 SkeletonView 적용 방법 적용하려는 View에 isSkeletonView = true로 skeleton 활성화 im ios-development.tistory.com https://korjaeyoungyun...
[Swift] iOS 기기 내 PDF 혹은 파일 첨부 하는 방법
일하다가 요건으로 pdf 파일을 넘겨줘야하는 상황이 있었다. 애플에서 미리 만들어 놓은 함수를 통해 간단히 파일을 끌어올 수 있었다. 나의 기억력은 나쁘기 때문에 까먹으면 다음에 써먹으려고 적는다... import UniformTypeIdentifiers import PDFKit class VC: UIViewController { let filePickerViewController = UIDocumentPickerViewController(forOpeningContentTypes: [UTType.pdf], asCopy: true) ... func someThingEvent() { filePickerViewController.delegate = self filePickerViewController.allo..
[Swift] UIImagePickerController 의 사용법
이거 또한 일하다가 요건으로 나왔기에.. 작성한다. 파일첨부보단 더 간단하다. 커스텀 형식으로도 할 수 있지만 형식적으로 이미지를 애플에서 제공하는 식으로 불러오고 싶다면 UIImagePickerController를 사용하면 편리하다. 카메라로 촬영하기도 해당 컨트롤러를 사용하면 쉽게 접근 할 수 있다. import MobileCoreServices class VC: BaseUIViewController { let imagePickerViewController = UIImagePickerController() ... private func openImageLibrary() { imagePickerViewController.delegate = self imagePickerViewController.sour..
[Swift] KeyChain 사용법
로그인 화면을 구현하다가 중요한 정보들을 UserDefaults에 넣으면 보안 이슈가 생길 수 있다고 한다. 자신의 핸드폰에 보안된 데이터로 저장하는 방법으로 키체인에 대해서 알아보았다. https://dvlpr-chan.tistory.com/27 [iOS] 키체인 (Keychain Service) 안녕하세요~ 차니에요! 오늘은 키체인에 대해 알아보겠습니다~~! 1. 키체인이란? Apple에서 공식으로 제공하는 보안 프레임워크이며, 사용자의 민감한(개인 정보 등) 데이터들을 저장하는 저장소 dvlpr-chan.tistory.com https://beenii.tistory.com/160 키체인 (Key Chain) 아이폰 유저라면 한 번쯤은 키체인 로그인을 사용해봤을 것 같습니다. 저는 이번 동아리 프로젝..
[Swift] UITableView Cell에서 TapGesture가 안될 때
간혹 Cell 내에 뷰를 addSubview 할 때 self.addSubview(tempView) 처럼 할 때가 있었다... 이렇게 되면 tempView.addGestureRecognizer(UITapGestureRecognizer(....)) 가 먹히질 않는다. 꼭 아래처럼 바꿔서 사용해주자.... 이거로 몇분을 버렸나. // 테이블 뷰 셀 내에서! // 사용을 지양할 것 tempView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: ...)) self.addSubview(tempView) // 탭 제스처를 먹이려면 다음과 같이.. contentView.addSubview 를 해주자.. tempView.addGestureRecogn..
[Swift] UITableView에서 scroll 에 따른 Header 부분 컨트롤 하기
간혹 UI를 만들다 보면 멋있고 깔끔하게 만드려고 생각하다 보니 최근 트렌드는 어떤가 싶어 둘러보았다. 사용성이 좋게끔 화면을 더 넓게 활용하거나 스크롤에 따라 하이라이트를 사용하기도 하는 것 같았다. 그런 설명이 있는 블로그들을 찾아 모아놨다. https://macgongmon.club/29 iOS 힙한 UI 따라 만들기 Ep.01 "에이블리, 배민" 헤더가 고정되는 테이블 뷰 만들기👋 일상 생활을 하면서 정말 많이 쓰이는 힙한 앱들이 많은데 그 앱에서 보여주는 UI에 대해서 당연하게 사용만 해보고 구현 방법에 대해서는 깊게 생각해본적이 별로 없는 것 같습니다..😭 힙한 macgongmon.club https://iamcho2.github.io/2020/11/02/uitableview-sticky-he..
[Swift] if case let 은 언제 쓰는 것인가?
switch문을 쓰다가도 case let .example(param1, param2) 이라는 것이 있다. case .example(let param1, let param2) 와도 같은 문자인데 자세한 사항은 아래 링크로 공부하자. https://woozzang.tistory.com/177 [Swift] if case let 를 사용하여 불필요한 코드 줄이기 안녕하세요🐶 이번 시간에는 if case let 패턴을 사용해 switch-case 구문의 boiler plate 를 줄여보도록 하겠습니다. 언제 쓰는가? 열거형을 처리할 때 보통 저는 switch-case 를 사용했었습니다. 단일 case woozzang.tistory.com