[iOS]Settings Bundle을 이용하여 라이센스를 설정 내에 표시하기
얼마전 tmax 발표를 보고 오픈소스 라이센스를 표시해놓아야 겠다는 생각이 많이 들었습니다. 앱 내에 UI를 만들고 넣어야 하나라는 생각이 들어서 설정에 추가하는 방식으로 선회를 하였습니다. 이렇게 말이죠. 위와 같이...
얼마전 tmax 발표를 보고 오픈소스 라이센스를 표시해놓아야 겠다는 생각이 많이 들었습니다. 앱 내에 UI를 만들고 넣어야 하나라는 생각이 들어서 설정에 추가하는 방식으로 선회를 하였습니다. 이렇게 말이죠. 위와 같이...
iOS 개발을 하다보면, 2x 사이즈로 이미지를 받곤 하는데 이들 이미지에서 간혹 폭, 높이가 홀수 크기로 받는 경우가 있습니다. 이를 다시 1x 사이즈로 줄여야 해야하는데, 홀수라면 난감한 경우가 있습니다....
가끔씩 매터리얼 디자인의 물결 효과를 보면서 iOS에 적용해볼까 했지만, 이 효과때문에 Material 라이브러리를 추가해야하나 했습니다. 그래서 CALayer를 이용해서 구현해보았습니다. class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad()...
Swift에서는 hashable이라는 프로토콜을 통해 커스텀 구조 및 고유 값을 만들 수 있습니다. struct Point { let x: Int let y: Int } extension Point: Hashable { var hashValue:...
Subjects Subject는 Observer와 Observable 두 역할을 수행하는 브릿지 또는 프록시 종류입니다. Observer 역할로, 하나 이상의 Observable을 구독하며, Observable 역할로 아이템을 내보낼 수 있습니다. Subject를 지원하는 클래스는 다음과 같습니다....
Driver RxSwift는 다른 언어의 Rx 구현체와는 다르게 Driver라는 unit을 제공합니다. 하지만 기본으로 Observable을 제공하기 때문에 Driver를 언제 써야 할 지 궁금했습니다. Driver는 UI layer에서 좀 더 직관적으로 사용하도록...
얼마전에 영상 재생시 보여줄 Artwork로 기존 이미지를 재활용하는 방안이 나와서 작업을 해보았는데 기존 이미지가 라운딩 처리되는 바람에 iOS의 Artwork로 보여줄 때 외각부분이 하얗게 나왔습니다. 그래서 이미지를 다시 만드니...
Clang diagnostic 경고 무시하기 코드를 작성하다 보면 어쩔 수 없이 경고가 발생하더라도 그대로 작업해야 하는 경우가 있습니다. 예를 들면, 컴파일 및 배포를 해도 상관은 없지만 Xcode Server에서 경고...
사내에서 돌아가고 있는 서비스를 웹페이지를 파싱해서 앱으로 만들고 있습니다. 사내 서비스가 토이 프로젝트였기 때문에 앱 형태의 서비스는 고려되지 않지만 대부분 작업을 수월하게 진행하였습니다. 그러나 마지막 작업을 진행하던 도중...
Pem과 SSL Certificate Check를 이용하여 Push 인증서 관리하기 Push 인증서는 만든 후 394일 동안 유효합니다. 하지만 서비스를 운영하다 까먹고 유효 기간이 지나 인증서가 만료되기도 합니다. 그 전에 서비스가...
UI와 관련된 프로그래밍을 주로 하다 보니 항상 UI와 데이터 간의 바인딩 문제, 구조적 설계에 미숙하여 나중에 고칠 때 다시 찾는 데 어려움을 겪은 적이 많았습니다. 그러면 이를 어떻게...
서비스에 따라 다르지만 인앱 가격이 자주 바뀌는 서비스인 경우, 매번 itunesconnect에 들어가서 인앱 가격을 변경하거나 기간을 설정해줘야 합니다. 이벤트를 해야 하는 시점에 여러 앱의 인앱들을 바꿔야 한다면, 끔찍합니다....
프로토콜은 클래스나 구조체에서 사용 가능합니다. 또한, 프로토콜을 클래스에서만 사용 가능하도록 선언할 수 있습니다. protocol TTTProtocol: class { func hello(greeting: String) } class TTT: TTTProtocol { func hello(greeting: String)...
최근에 맡은 프로젝트가 2개가 되고 7개의 앱을 관리하게 되었습니다. 그래서 앱 업데이트를 할 때마다 plist에 있는 버전 정보를 바꾸는 것이 정말로 귀찮아 졌습니다. 특히나 watch를 지원하는 앱인 경우는...
뒤늦게 fastlan을 알게되었습니다. 아직 Xcode ci를 도입해야하는데 이런저런 사정이.. 귀차니즘과 함께하여 진행하질 못하였기에 이런저런 수작업으로 바이너리를 앱스토어에 올리고 있었습니다. fastlane은 특정 기능들을 묶어 실행하는 길, 통로라고 할 수...
Humans Need Not Apply 영상을 본 리뷰입니다. 이전부터 사람은 게으른 존재로, 좀 더 쉽게, 좀 더 편하게 할 수 있도록 도구를 만들었습니다. 순수하게 짐을 운반하던 것을 통나무를 앞에...
슬슬 겨울이 다가와 버린 11월 말, 서비스 내에서도 겨울맞이 이벤트 등을 할 때가 있는데요. 그런 이벤트 맞이하여 화면에서 눈이 떨어지는 효과를 추가해보겠습니다. 눈 효과 파티클 만들기 프로젝트 생성...
한글 초성, 중성, 종성을 분리하는 기존 Objective-C 코드를 모던하게 수정하였고, Swift 코드로 변환하였습니다. Objective-C @interface NSString (Hangul) - (NSString *)linearHangul; @end @implementation NSString (Hangul) - (NSString *)linearHangul {...
[원본 보기] 이 영상 번역 글은 Protocol-Oriented Programming in Swift의 비공식 영상 번역글이며 Apple에서 보증, 유지 또는 감독하지 않습니다. 공식 영상을 보시려면 Apple Developer을 방문하세요. 프로토콜지향 프로그래밍 안녕하세요....
프로젝트 진행하다보면 개발자마다 스타일이 다르지만 종종 클래스 하나에 많은 메소드들이 선언되어 있고, 그러다 보면 한 클래스당 최소 500줄 이상, 심심찮게 천줄, 2천줄 가량 되기도 합니다. 일반적으로 화면을 보여주는...
이전에 작성한 상세 로그 만들기에서 DFT_TRACE 매크로를 만들어 잘 사용했었습니다. Swift에서는 매크로를 사용할 수 없어, 전역으로 사용할 함수를 만들어 호출하도록 만들었습니다. func DFT_TRACE(filename: String = __FILE__, line: Int...
들어가기 전 Swift에서 Tuple을 이용하여 여러 값을 한 번에 넘길 수 있습니다. 하지만 Objective-C는 ARC가 적용된 이후엔 struct 내부에 클래스 타입을 사용하지 못하도록 금지되어 있습니다. typedef struct ImageNames...
Objective-C에서도 generics을 사용할 수 있다는 것을 아시나요? 이전에 Objective-C를 사용하면서 불만스러웠던 것 중 하나가 NSArray나 NSDictionary, NSSet 등에서 값을 넣을 때, id 타입으로 들어간다는 점이었습니다. 즉, 어떤 타입의...
IF Case 문 Swift 2에서는 Switch문이 아닌 if문에서도 case를 사용할 수 있습니다. enum Direction { case Right, Down, Left, Up } let r = Direction.Right let l =...
Problem - Spiral Array (Level 3) 문제는 다음과 같다: 6 6 0 1 2 3 4 5 19 20 21 22 23 6 18 31 32 33 24...
안전하게 배열 조회하기 배열에서 특정 위치의 값을 얻기 위해서는 배열의 크기를 체크해야하는 조건이 필요합니다. if index < array.count { // 작업 수행 } 범위를 확인하지 않고 값을 조회하면,...