About Today Extension Today Extension을 통해 iOS / MacOS 에서는 위젯을 나타낼 수 있다. 위젯의 핵심적인 기능은 사용자에게 빠른 데이터 제공을 위한 것이지 단계별 작업을 수행하거나 컨텐츠 업로드 / 다운로드와 같은 작업을 수행하는데 적절한 방법이 아니다. Today 위젯은 아래와 같은 작업을 수행해야 한다. 컨텐츠를 항상 최신으로 유지사용자 상호 작용에 적절하게 응답잘 작동해야 함 (메모리 최적화가 제대로 되어 있지 않으면 시스템이 종료함) Today 위젯은 사용자 상호 작용이 빠르고 제한적이기 때문에 사용자가 관심을 갖는 정보를 강조하는 간단하고 효율적인 UI가 필요하다. Today 위젯은 입력을 허용하지 않기 때문에 앱을 통해 위젯의 콘텐츠와 동작을 구성할 수 ..
Text Alignment 오늘은 iOS에서 매우 간단한 텍스트 정렬에 대해 소개 해볼까 합니다. 물론 스토리보드 상에서 UILabel의 텍스트 정렬을 지정할 수 있지만, 어플리케이션을 사용하면서 동적으로 텍스트 정렬을 하려면 어떻게 해야 할까요? 바로 코드를 확인해 보도록 하겠습니다. func textAlignmentSetting() { Label.textAlignment = .center // center, justified, natural, left, right } 이걸로 끝입니다.주석에 적혀있는 것처럼 각 정렬 방법이 존재하며 코드로 필요에 따라 알맞게 사용하면 되겠습니다.
2016년 9월 7일부터 Appstore Improvements 라는 이름으로 애플의 앱스토어 대청소가 시작되었습니다.아래의 가이드를 참고하시어 앱스토어에 앱을 올려놓으신 개발자 분들은 미리미리 준비하시는 것도 나쁘지 않을 것 같습니다. 앱스토어 개선 1.어떤 종류의 앱이 영향을 받을까? 모든 영역에 걸쳐 앱스토어에 등록되어 있는 앱들은 예상되로 잘 작동하는지, 최신의 리뷰 가이드라인을 따르는지, 너무 오래되지 않았는지를 평가받게 된다. 2.앱에서 문제가 발견되면 어떤 일이 생기나? 앱스토어 팀이 직접 연락을 취해 필요한 조치들을 전달해줄 것이다. 그러나 앱 실행과 함께 크래시가 발생하는 앱들은 즉시 앱스토어에서 제거될 것이다. 3.얼마나 기한이 주어지나? 앱스토어에 앱을 유지하고자 한다면 30일 이내에..
Navigation bar 숨김 시 swipe back 불가 iOS 앱을 개발할 때 navigation controller를 사용하지만 네비게이션바를 직접 만들어 사용하고 싶을 경우 기본으로 제공되는 네비게이션바를 숨김처리 하는 경우가 많다. 네비게이션바를 숨기는거야 쉽기 때문에 별 문제가 되지 않지만, 한가지 거슬리는 점이 발생한다. 필자는 손으로 쓸어서 뒤로가기를 무척이나 좋아하며 자주 사용한다. 하지만 네비게이션바를 숨김처리 하면 이 스와이프를 통해 전 페이지로 돌아가는 동작이 작동하지 않는다. 네비게이션바를 숨기면서 이 동작을 다시 사용하고자 하면 아래의 코드를 Root view의 viewDidLoad 내에 입력해 주면 된다. override func viewDidLoad() { super.vie..
NSLocalizedString에 변수 사용 iOS 앱을 개발하면서 항상 염두해두어야 할 것이 바로 현지화. 즉 Localization이다. 코드 상으로 특정 문구를 나타낼 때에는 이 Localization을 습관적으로 항상 적용해 두는 것이 여러모로 좋은데 이 때 사용하는 것이 바로 NSLocalizedString이다. NSLocalizedString의 사용법은 조금만 검색해봐도 많이 나오기 때문에 여기서는 별도로 설명하지 않겠다. NSLocalizedString을 사용하면서 항상 궁금했던 부분이 만약 특정 값이 계속 변하는 String의 경우에는 어떻게 적용시켜야 하는가였다. 답은 의외로 간단했다. 우선 코드를 보도록 하자. String.localizedStringWithFormat(NSLocaliz..
CLLocation을 주소로 변경하기 iOS에는 CLGeocoder라는 클래스를 통해 주소를 좌표로, 좌표를 주소로 변경할 수 있는 기능을 제공하고 있다. 예를 들어 MKMapView에서 유저가 선택한 위치의 좌표(위도/경도)를 가지고 오는 작업은 쉽게 검색해볼 수도 있고 구현해 볼 수도 있지만, 그 좌표에 해당하는 주소를 가져오려고 어떻게 해야 할지 막막해진다. 이 때 사용하는 것이 바로 CLGeocoder이다. 먼저 간단한 코드를 보도록 하자. func convertToAddressWith(coordinate: CLLocation) { let geoCoder = CLGeocoder() geoCoder.reverseGeocodeLocation(coordinate) { (placemarks, error)..
싱글톤 패턴(Singleton Pattern) 싱글톤 패턴이란? 소프트웨어 디자인 패턴에서 싱글톤 패턴(Singleton Pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글톤 패턴이라고 한다. Singleton 패턴의 용도는 프로그램 내에서 단 하나의 인스턴스만을 생성해야 하는 상황, 즉 예를 들자면 환경설정을 관리하는 클래스 혹은 Connection Pool, Thread Pool과 같이 관리되어야 하는 상황에서 적용되는 디자인 패턴을 의미한다. 싱글톤 구현 일반적인 Singleton 패턴의 형태는 다음과 같다. 여기서 중점적으로 보아야 할 것은 생성..
Status Bar 글씨 색상 변경 간혹 status bar의 글씨 색을 변경하고 싶을 경우가 있다. Status bar라고 하면 아래의 이 부분을 말한다. 방법도 나와있지 않고 자료도 많이 없어 자칫 어려워 보일 수 있지만 사실 코드 한줄만 추가하면 될 정도로 무척이나 간단한 작업 중 하나이다. 앱을 처음 실행할 때부터 색상을 변경하고자 한다면 AppDelegate 로 이동하여 아래에 다음의 코드를 추가해준다. // AppDelegate.swift func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { UIApplication.shared..
Optional Swift 를 배우는 사람들이 처음에 가장 어렵게 생각하는 것이 바로 이 optional 이다. Optional 을 간략하게 설명하자면 값이 존재할 수도 있고, 존재하지 않을 수도 있다 라고 설명할 수 있는데, 이 개념 자체가 처음에는 매우 낯설게 느껴지기 때문에 그렇다. 일단 바로 간단한 코드를 한번 보도록 하자. let possibleNumber = "123" let convertedNumber: Int? = Int(possibleNumber) 이 코드를 보면 possibleNumber 라는 변수를 선언하고 123 이라는 값을 스트링으로 대입해주고 있다. 변수명에서 볼 수 있듯이 우리는 String으로 선언을 해주었지만 숫자일 수도 있다라는 가능성을 열어두고 있다. 바로 다음 줄에서 ..
Enum의 case들로 for 문을 돌려보자간혹 enum에 있는 각 case들을 이용해 for문을 돌리며 각 case 별로 무언가 작업을 진행하거나 확인, 테스트를 해보고 싶은 경우가 있다. 하지만 Swift에서 enum은 sequence type이 아니라 for문을 돌리며 진행할 수가 없는데 이를 극복하는 많은 방법이 있겠지만, 그 중에서 약간의 번거로움이 있기는 하지만 가장 단순하고 쉬운 방법을 하나 소개해보고자 한다.Swift에서 enum type의 선언은 일반적으로 아래와 같다.enum SmallLetters { case a case b case c } 이 enum type을 for문을 사용해 각 case들을 대문자로 치환해 보고 싶다. 하지만 sequence type이 아니기 때문에 원하는 기능..
- Total
- Today
- Yesterday