3D Touch 적용하기 (1) – Home screen quick action API

들어가며.. 최근 새로이 출시한 iPhone6s / 6s Plus 에는 MacBook Pro로 이미 선보인 바 있는 3D Touch 기술이 적용되었다. iPhone에 추가된 3D Touch의 경우 크게 4가지 기능이 있는데 아래와 같다. Home screen quick action API UIKit peek and pop API Web view peek and pop API UITouch fouce properties 그 중 Home screen quick action API 적용하는 방법을 간략하게 알아보도록 한다. Home screen quick action API는 다시 2 종류로 나뉘는데 아래와 같다. Static quick actions Dynamic quick actions 이 둘의 차이점은 미리 정의되어 있느냐 상황에 따라 정의가 되느냐의 차이로 Static quick actions의 경우 info.plist에 정의가 되며, Dynamic quick actions는 코드로 정의가 가능하다. 사실상 차이점은 크진 않으나 혼용하여 사용할 경우 Static이 우선한다는 것이다. 공통의 제약조건이 하나 있는데 quick actions는 4개까지만 적용이 가능하다는 것이다. 5번째 actions부터는 무시된다. Static quick actions 앞서 설명한 것과 같이 info.plist에 정의가 된다. UIApplicationShortCutItems라는 키를 가지는 배열로 선언이 되며 각 item은 Dictionary 형태를 가진다. 각 Dictionary는 UIApplicationShortcutItemTitle / UIApplicationShortcutItemSubtitle…

UITextField의 Placeholder에 animation 효과를 적용한 것처럼 보이게 구현하기

음.. 제목 정하기가 참 힘드네요. UITextField는 보통 로그인과 회원가입 시 유저에게 문자열을 입력받기 위해서 많이 사용합니다. 로그인 페이지에 대해서 이런저런 고민이 있어 pinterest를 검색하던 와중에 아래의 UI 컨셉을 발견했습니다. 부연 설명을 하자면, UITextField에 특정값 입력을 유도하는 placeholder는 입력이 시작되면 사라지게 되어 있습니다. 이 때 위 화면과 같이 타이틀이 별도로 없는 UI구성일 때는 좀 애매한 경우가 생기기도 하는데 재치있게 풀었더군요. 그래서 구현을 해봤습니다! (사실 다 아시는 건데 기록은 남겨야겠기에..) 아래 영상은 위 컨셉과 유사하게 컴포넌트를 적용한 화면입니다. 똑같진 않지만 비슷한가요…? 원리는 UITextField를 상속받은 클래스에 UILabel을 임의로 하나 더 addSubview 합니다. 사실 가장 효율적인 방법은 placeholder를 보여주는 view를 조작하는 것인데 쉽게하기로 맘먹고 UILabel을 배치했습니다. 이 코드에서 가장 중요한 포인트는 changeStatus입니다. enum으로 정의된 status에 따라 UILabel의 animation이 수행되도록 했습니다. !! 아래 노출되는 코드들은 Swift 2.0 기준입니다. 그 다음은 UITextField delegate의 각 이벤트 메소드에 상황에 따른 status 변경을 합니다. 위 코드에서 정의한 changeStatus를 적절하게 호출합니다. 비교적 쉽게 concept 디자인의 UITextField를 완성했습니다. (팁이나 될려나 몰겠네요..)

Swift vs. Objective-C ?!

2014년 Apple은 WWDC 2014에서 Swift를 발표했고 빠르게 버전업을 거쳐 벌써 Swift 2.0이 나왔습니다. 발표 당일 현지에 있었던 전 환호의 소리를 들었지만 걱정이 많았습니다. 새로운 언어를 배워야 한다는 부담감도 있었고 반감도 있었죠. 그래서 주변 분들에게는 난 계속 Objective-C로 개발할거야 라고 장담했었죠. 하지만 그 장담은 불과 일년만에 깨지고 말았습니다. 올해 초 새로운 프로젝트에 투입이 되었는데 무슨 이유인지 몰라도 욕심이 생겨서 프로젝트를 Swift로 세팅했습니다. 당시는 Swift 1.1에서 1.2로 넘어가는 시점이었는데 미리 해본 개발자분들은 아직은 아니다라며 말리셨습니다만 무모한(?) 도전을 해보기로 했습니다. 결국 Swift 1.2를 이용해 프로젝트를 계속 진행하였고 최근 결과물이 Apple의 심사를 마치고 App Store에 등록이 되었습니다. 왜 중도에 Objective-C로 회귀하지 않고 Swift로 프로젝트를 지속했을까 궁금증이 생기시는 분도 계실테고 반대로 아직도 시기상조 아닌가라고 생각하시는 분들이 많으시리라 생각됩니다. 그래서 좀 늦었지만 Swift 프로젝트 경험기를 공유하고자 합니다. Swift로는 안되는 것이 많다. 아닙니다. 어떤 framework를 사용하느냐에 따라 버그 유무는 존재했었지만 안되는 것은 없었습니다. 1.1까지는 버그가 꽤 많았다고 합니다. 그래서 Objective-C 코드와 Swift 코드를 Bridge 해서 사용하느니 그냥 Objective-C로 하겠다는 분도 계셨었습니다. 이 부분은 1.2에서…

BMW Active Tourer Launch 행사와 주행 소감

2월 26일 어제 영종도에 있는 BMW Driving Center에서 열리는 BMW 2 series Active Tourer Launch 행사에 다녀왔습니다. 320d 구매하고 몇 번의 이벤트 초청이 있었지만 보통 평일 오후에 행사가 열리는지라 남의 일이라 생각했는데 최근 이런저런 이슈들로 기분도 그냥 그렇고 바람이나 쐬자는 생각에 직장에 반차내고 다녀왔습니다. BMW Driving Center는 다녀오신 분들은 아시겠지만 인천공항 가는 길, 영종도에 위치하고 있습니다. 지난 주 해외여행을 떠나면서 에어포트 서비스를 이용하면서 처음으로 방문했었지만 시간상 문제로 구경을 못했었습니다 그래서 이번엔 조금 일찍 가서 여기저기 둘러봤죠. (제가 꼭 보고 싶었던 M3는 없더군요.. ㅠㅠ) 요기조기 둘러보고 있는데 행사가 시작된다는 안내요원의 목소리를 듣고 행사장으로 입장을 했습니다. 간식(사과, 바나나, 빵 등)과 음료를 받고 함께 간 분들과 대화를 나누다보니 행사장 내의 발표장 문이 열렸고 자리에 착석! 의자가 아주 푹신하니 좋더란.. BMW Korea에서 준비한 영상과 설명이 끝나고 무대에 등장한 Active Tourer. 제 주관적인 첫 인상은 BMW 답지 않은 디자인. 즉, 다른 제조사에서 BMW 디자인 베껴놓은 것 같다는 느낌이었습니다. 무대 인사가 끝나고 행사장으로 다시 나갔더니 Active Tourer…

개인적인 2014년 돌아보기 및 2015년..

신년이 밝은지 벌써 6일이 지났습니다. 새해 복 많이 받으세요!! 개인적으로 작년 한 해는 많은 반성을 요하는 한 해가 되었네요. 핑계를 대자면 이런저런 이슈들이 있었지만 결론적으로 포스팅도 미비했고 더불어 개인적인 기술 연마에도 많이 부족했던 한 해였습니다. iOS 위에서 뭔가 만드는게 재미가 있었던 나날에는 혼자서도 이런저런 모듈을 만들어보고 또 적용해보기도 했습니다만 즐거웠던 시절은 거의 저물고 복잡하고 많은 이슈가 발생하는 요구사항에 서서히 복잡해지는 앱을 보며 한숨을 짓기도 했으며 한국에서의 iOS 위상에 대해서도 돌이켜보며 다소 비판적이었던 저였습니다. 그래서 이런저런 외도(?) 시도도 해보며 앞으로 나의 커리어를 어떻게 이어갈까란 고민도 많은 한 해였기도 합니다. Swift 애플에서는 2014 WWDC에서 Swift라는 언어를 발표하였고 이후에 github이나 여러 iOS 개발 관련 매체에서는 Swift로 만든 여러 오픈 소스들이 쏟아져나왔습니다. 반면 한국에서는 몇몇 메이저 기업을 제외하고는 Swift에 소극적인 모습을 보이며 관망만 한 곳이 대부분이었을 것이라 생각이 됩니다. 당연한거죠. 새로 나온 언어이기도 하고 미리 적용한 곳에서의 정보에 의하면 극소수긴 하지만 어쩌면 치명적인 버그도 있다고 보고 되기도 했으니까요. 하지만 2015년에는 아마 많은 iOS 앱…