profile
요즘은 https://welcometodannas.tistory.com/에 더 많은 글을 씁니다.
post-thumbnail

최근에 읽은 양질의 iOS 개발 아티클 모음

iOS 개발 트렌드를 쫓아가기 위해 일주일에 한 번 날아오는 뉴스레터 iOS Dev Weekly를 구독하고 있는데, 정말 양질의 개발 아티클이 선별되어 날아온다. 그렇게 선별되어 날아온 아티클 중 관심있게 읽었던 글들을 공유해보려 한다. The evolution of Facebook’s iOS app architecture 페이스북 iOS 앱은

2023년 3월 12일
·
0개의 댓글
·
post-thumbnail

[iOS+Unity] 유니티 뷰 위에 Native iOS UI 얹고 효율적으로 관리하기

유니티에서도 꽤나 괜찮은 크로스플랫폼 빌드를 지원하고 있다. 물론, iOS 플랫폼도 예외는 아니다. 설정도 그닥 어렵지 않고 클릭 몇 번이면 유니티에서 작성한 코드가 iOS 앱으로 빌드된다. 하지만, 하나 무시할 수 없는 문제가 있다. 유니티는 게임엔진이지, UI에 최적화 되어 있는 것은 아니기 때문에 유니티에서 작업한 UI는 어쩔 수 없이 조금 뿌옇게 화면에 보이게 된다. 유니티가 최근 새로 밀고 있는 UI Toolkit도 예외는 아니다. 문제가 되는 건 구현해야 하는 게 게임 형식의 앱이 아닌 일반 앱의 UI를 가져야 할 때다. 3D 뷰가 필요하지만 게임이 아닌 심플한 메타버스 형식의 앱들이 그 예시가 될 수 있을 것 같다. 이렇게 유니티로만 만들어진 게임이 아닌 앱들의 UI는 섬세하지 않은 눈을 가진 사람도 가장자리나 색 표현이 좀 뿌연데? 하는 느낌을 받을 수 있을 정도다. 그래서 Swift UIKit으로 구현한 iOS 앱 베이스에 일부 3D 뷰만 유니티로 구현하며, 유니

2023년 2월 26일
·
0개의 댓글
·
post-thumbnail

Unity에서 Swift 코드로 iOS native 구현하기(feat. HealthKit)

Unity가 다양한 플랫폼과의 호환을 거의 완벽할 정도로 구사하고 있긴 하지만, 아무래도 코드 내에 native 코드가 필요할 때가 아예 없는 건 아닙니다. 특정 OS에서 프레임워크 API로 내려주고 있는 코드를 쓰고 싶을 때, 즉 iOS의 경우에는 -Kit 형태로 이름이 붙은 HomeKit, HealthKit, MapKit, ARKit 등등의 프레임워크를 쓰는 경우가 좋은 예시가 될 것 같습니다. Unity로 개발하던 중에 iOS의 HealthKit과 연동해 기기 사용자의 건강 정보를 읽고 업데이트 하고 싶었는데, 한글 자료는 물론 외국 자료도 마땅치 않더라구요. 그래서 작성하는 글입니다. 기본적으로 Unity 프로젝트에 Swift 코드를 임베드 하는 방법을 설명하고, HealthKit 연동 방법까지 공유합니다. 0️⃣ Unity와 iOS 네이티브 프레임워크 연동 희망편 - 주류 프레임워크 네이티브 alert 팝업, 갤러리/카메라 권한 사용을 위한 UI

2022년 7월 6일
·
0개의 댓글
·
post-thumbnail

iOS 개발 swift로 연월(년, 월)만 설정할 수 있는 UIPickerView 커스텀 하기

생각보다 개발을 하다보면 pickerView를 쓸 일이 꽤 많은 것 같다. 그래서 보통 피커뷰로 날짜를 설정하려고 하면 iOS에서 기본으로 제공하는 UIDatePicker을 사용하는데, 예쁘고 간편하긴 하지만 커스텀이 제한적이라 실제로 서비스에서 사용해본 적은 많이 없는 것 같다. 대신 커스텀이 용이한 UIPickerView로 UIDatePicker를 흉내내는 방식의 구현을 자주 사용한다. iOS 프로젝트 개발에서 생각보다 많을 것 같지만, 한글로 된 블로그 글이 몇 개 없는 것 같아 정리해보는 오늘의 주제는 아래처럼 정했다. > UIPickerView로 년, 월만 선택 가능한 피커 만들기 1. 텍스트필드 얹기 피커뷰를 뷰에 컴포넌트로 얹을 수도 있지만, 보통은 코드로 많이 생성한다. (뇌피셜로는 뷰에 얹어서 isHidden 처리 해주는 것보다 코드로 설정해주는 게 훨씬 간단하기 때문일 것 같다) 피커뷰를 코드로 만들기 위해서는 뜬금없지만 뷰에 UITextField

2021년 10월 31일
·
0개의 댓글
·
post-thumbnail

제목 뒤에 복사 버튼 넣어주세요

외주 하면 항상 상상치도 못한 곳에서 위기에 봉착하는 것 같다. 이번에는 제목 바로 뒤에 복사 버튼을 넣어달라는 요청을 받았다. 이런 식으로 이름 옆에 복사 버튼을 넣어서 제목을 복사할 수 있게 해야 하는데, 제목은 한 줄이 될지, 두 줄이 될지, 세 줄이 될지 모르는 상태였다. 복사 버튼을 추가하기 전 제목 부분의 구조는 line이 0으로 설정된 UIlabel로 구현되어 있었고, 제약 역시 superview에 leading, trailing 모두 상수값 0으로 잡혀 있는 상태였다. 여기서 superview는 제목 부분(제목, 펀드코드)를 감싸는 titleContain UIView안에 있었다. UIView는 디바이스 전체 너비를 superview로 두고 상수값으로 leading, trailing이 잡혀있는 상

2021년 10월 24일
·
0개의 댓글
·
post-thumbnail

Swift로 라이브러리 없이 무한 배너 구현하기 (feat. CollectionView)

외주 하는 곳에서 이번에는 실시간 검색어 애니메이션을 구현해달라고 했다. 이렇게 자동으로 롤링 되는 애니메이션이다. 👉🏻 무한 배너가 어려운 이유 얼핏 보면 쉬워보이지만, 따져야 할 것들이 조금 있어 까다로운 기능이다. 무한으로 셀이 생성돼야 한다 자동으로 스크롤 돼야 한다 사실 작년 이맘때에 이 기능을 구현해본 적이 있는데, 그때는 라이브러리를 사용했었다. 하지만 내가 지금 하고 있는 프로젝트는 이미 프로젝트 자체가 너무 무겁기도 하고 더이상의 라이브러리는 안 쓰거나 최소화하는 게 나을 거 같아 라이브러리 없이 야매로 이 기능을 구현해보기로 했다. (사실 말이 장황했지만 그냥 고집인 거 같기도 하다) 👉🏻 야매 로직 일단 Collectio

2021년 10월 14일
·
0개의 댓글
·
post-thumbnail

iOS 앱 키워드 버블 차트 개발기 (Swift로 버블 차트 구현하기)

외주로 iOS 앱 개발을 하고 있는데, 키워드 버블을 구현해달라고 한다. 대충 이렇게 생긴 .. 당연히 레퍼런스는 없었다. 어딘가 한 번쯤 보게 생겼는데, 했을 때쯤에는 웹에서는 많이 봤지만 앱에서는 한 번도 본 적이 없다는 것을 깨달은 후였다. 막막했다. 막막하게 한 3일 정도 라이브러리 서치와 어떻게 구현할 수 있을지, javascript로 구현해서 web뷰 이식을 하는 방법이 나을지 별의 별 궁리를 다 했다. 그러다가 기적처럼 라이브러리 딱 하나를 발견했다. https://www.highcharts.com/ Highcharts라는 다양한 차트 라이브러리였다. 이미 웹 프론트엔드, 안드로이드, iOS 환경 모두를 지원하고 있었다. 깃허브를 잠시 살펴 보니 마지막 업데

2021년 10월 10일
·
0개의 댓글
·
post-thumbnail

[iOS] xib 뷰 위에 얹은 테이블뷰에는 테이블뷰셀을 추가할 수 없다?!

Prologue) 어쩌다 ..... 나는 원래 개발할 때 xib를 웬만하면 사용하지 않는 편인데, 이번에 외주 맡게 된 앱의 기존 코드를 보니 xib 덩어리라 "그래,,, 이 기회에 xib 연습이라도 더 해보자" 하는 마음으로 새로운 뷰를 xib로 구현하고 있다. 그러던 중, 상상치도 못 한 난관에 봉착했는데, 바로 xib 위에 얹은 테이블뷰에는 원래 개발하던 식으로 그 안에 tableViewCell을 얹고 나서 UI 작업을 하지 못 하는 거였다! 자꾸 TableView 안으로 cell이 안 들어가길래 넣으려고 요리조리 해봤지만, 절대 안 들어갔다 .. 사실 테이블뷰도 기존 스토리보드 위 viewController에서 보던 거랑 조금 다르게 생기긴 했었다. (거기서부터 불안했음) <i

2021년 9월 27일
·
0개의 댓글
·
post-thumbnail

Swift) 인스턴스 생성 및 소멸

* 계속해서 수정 중입니다. 1. 인스턴스 생성 초기화 과정: 새로운 인스턴스 사용 준비 위해 저장 프로퍼티의 초깃값 설정 초기화의 구현: 이니셜라이저(initializer) 정의 새로운 인스턴스 생성할 수 있는 특별한 메서드가 됨 반환값 없음 초기화 하는 역할이 다야 func 대신 init 사용 1) 프로퍼티 기본값 구조체, 클래스 인스턴스 -> 처음 생성할 때 옵셔널 제외하고는 다 초깃값 할당해야 함 이걸 이제 init() 실행될 때 하는 거지 그래서 초기화 후에 값이 저장되지 않은 놈은 존재할 수가 없다 프로퍼티 정의할 때 기본값(Default Value) 할당하면 init()에서 초깃값 설정 안 해줘도 자동 초기화 됨 초기화의 많은 방법들 이니셜라이저 매개변수 옵셔널 프로퍼티 상수 프로퍼티의 값

2021년 8월 9일
·
0개의 댓글
·
post-thumbnail

Swift) 구조체와 클래스

* 계속 수정 중입니다 1. 구조체 2. 클래스 다중 상속이 되지 않음 2-1 클래스의 정의 앞에 class를 적고, 뒤에 클래스의 이름을 적는다. 클래스 이름은 대문자 카멜케이스를 이용해 적는다. 2-2 프로퍼티 & 메서드 2-3 타입 메서드 재정의 둘 다 타입 메서드라고 부르지만, 앞에 static/class 키워드에 따라 타입 메서드의 재정의 성질이 달라짐 2-4 클래스 사용 클래스는 구조체와 다르게, mutable(var), immutable(let) 모두 mutableProperty를 사용해줄 수 있음 하지만, mutableReference.immutableProperty = 200, immutableReference.immutableProperty = 200은 둘 다 에러가 남 -> var, let 키워드와 상관없이 내부 mu

2021년 8월 6일
·
0개의 댓글
·