Text Alignment 오늘은 iOS에서 매우 간단한 텍스트 정렬에 대해 소개 해볼까 합니다. 물론 스토리보드 상에서 UILabel의 텍스트 정렬을 지정할 수 있지만, 어플리케이션을 사용하면서 동적으로 텍스트 정렬을 하려면 어떻게 해야 할까요? 바로 코드를 확인해 보도록 하겠습니다. func textAlignmentSetting() { Label.textAlignment = .center // center, justified, natural, left, right } 이걸로 끝입니다.주석에 적혀있는 것처럼 각 정렬 방법이 존재하며 코드로 필요에 따라 알맞게 사용하면 되겠습니다.
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)..
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이 아니기 때문에 원하는 기능..
weak self의 사용weak reference(약한 참조)는 애플의 WWDC 영상에 따르면 Strong Reference Cycle(강력 순환 참조)를 벗어나기 위해 사용한다고 설명하고 있다. Closure를 사용하면서 closure 내부에 self를 사용하는 경우가 존재하는데, 이렇게 할 경우 일반적인 상황에서는 물론 문제가 없겠지만 특수한 상황에서는 문제가 될 소지가 있다. 코드를 통해 간단하게 살펴보도록 하자.class Thing { var disposable: Disposable? var total: Int = 0 deinit { disposable?.dispose() } init(producer: SignalProducer) { disposable = producer.startWithNext..
UIWindow를 사용했더니 Status Bar가 사라졌다…간혹 UIWindow를 사용할 일이 생기는데, UIWindow에 특정 뷰를 subview로 추가했더니 status bar가 사라지는 일이 간혹 발생한다. 분명 별다른 작업을 안한거 같은데도 이러한 일이 발생해 제법 당황하는 경우가 종종 생기는데 본인의 경우에는 모든 뷰에서 공통 적으로 사용 가능한 custom alert 창을 만들었을 때 이러한 경우가 발생하였다. 우선 본인이 작성하였던 아래의 코드를 먼저 보면서 확인해 보도록 하자.var window: UIWindow? func showCustomPopupView { window = UIApplication.sharedApplication().keyWindow window!.windowLevel..
최근 개발되는 대부분의 앱들은 내비게이션바의 뒤로가기를 백 버튼 외에도 스크린 가장 왼쪽에서 오른쪽으로 스와이프 할 경우에도 뒤로가기가 동작하도록 구현되어 있다. 이러한 기능을 구현할 수 있도록 도와주는 것이 바로 UIScreenEdgePanGestureRecognizer이다. 간단한 샘플 코드를 보도록 하자.override func viewDidLoad() { super.viewDidLoad() let edgePanGesture = UIScreenEdgePanGestureRecognizer(target: self, action: #selector(CustomViewController.popViewControllerOnScreenEdgeSwipe(_:))) edgePanGesture.edges = .Le..
- Total
- Today
- Yesterday