Programming/iOS2015/07/24 00:21
Swift version : 1.2
iOS version : 8.4


Swift 문법도 익숙치 않은데 NSNotificationCenter 사용하려는데 막히는 부분이 많고...

Notificaiton 에서 keyboard 관련 정보 가져오려는데.... 왜이리 오류가 많은지..

다음과 코드가 동작함을 확인하였으니 참고하세요.


 NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil)


    func keyboardWillShow(notification: NSNotification) {
        let userInfo = notification.userInfo!

        let beginFrame = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue()
        let endFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
        let duration = (userInfo[UIKeyboardAnimationDurationUserInfoKey] as! NSNumber).doubleValue
        let animationOptions = UIViewAnimationOptions((userInfo[UIKeyboardAnimationCurveUserInfoKey] as! NSNumber).unsignedLongValue << 16)

        UIView.animateWithDuration(duration, delay: 0.0, options: animationOptions, animations: { () -> Void in
            
        }, completion: nil)
    }



Posted by 초보 프로그래머
TAG ios, swift
Programming/iOS2015/07/16 02:05

ReactiveCocoa 교육을 듣고 잊기 전에 예제를 만들었습니다.

시나리오

  • 로그인
    • id, pw 값이 있으면 Login 버튼이 활성화
    • id, pw 값 중 하나라도 없으면 login 버튼은 비활성화
  • 카운터
    • 0.5 초로 반복하여 count
    • 0.5 초 마다 red 가 show/hide를 반복
    • 2.5 초 마다 blue가 show/hide를 반복
    • 10 초 후에 timer 종료
    • red, blue 를 green으로 표시


해당 예제 커밋


설명은 추후에.... 


Posted by 초보 프로그래머
Programming/iOS2015/06/23 11:41

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
reason: 'Could not load NIB in bundle: 'NSBundle  (loaded)' 
with name 'viewController' and directory 'Main.storyboardc''


Storyboard를 사용하고 있는데 지금까지 없던 위와 같은 오류가 발생했네요.

폰에서는 문제가 없는데 iPad2 7.1 시뮬레이터에서만 위와 같은 오류가 발생합니다. 

Storyboard를 수정한 것과 관련된 것 같은데 정확한 이유는 알 수 없지만.... 해결 방법은 간단합니다.


Storyboard가 빌드된 storyboardc가 없어지도록 캐시를 비우면 된다고 하는데.....

몰라.. 뭔가 복잡해..


더 간단한 방법은 Storyboard 이름을 리펙하시면 됩니다.

그럼 해결~

Posted by 초보 프로그래머
Programming/iOS2015/02/11 15:35

다국어 지원을 위해 NSLocalizedString 을 하면 아이폰 디바이스의 언어 설정으로 문자열을 가져옵니다.

만약 앱 안에서 언어 설정을 변경하고 싶다면 어떻게 해야 할까??


검색을 해보면 가장 많이 나오는 방법은 아래와 같다.


[[NSUserDefaults standardUserDefaults] setObject:@[ @"ko" ] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];


NSLocalizedString이 AppleLanguages에 설정된 언어에서 가져오므로 잘 동작한다.

하지만 문제는 앱을 재 실행해야 한다는 것이다. 설정 하나 바꿨다고 앱을 재 실행하라고??


내가 찾은 방법은 다국어를 가져올때 특정 언어 Bundle에서 가져오도록 하는 것이다.


NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"Localizable" ofType:@"strings" inDirectory:nil forLocalization:@"ko"];
NSBundle *localizableBundle = [[NSBundle alloc] initWithPath:[bundlePath stringByDeletingLastPathComponent]];
NSLocalizedStringFromTableInBundle(key, nil, localizableBundle, nil);


위 코드에서는 디바이스 언어와 상관없이 모두 한국어로 다국로 문자열을 가져오게 하였습니다.

이 코드를 적용해도 바로 화면의 언어들이 변경되지는 않을 것 입니다.

추가 적으로 뷰를 새로 그려지게 하면 됩니다. 언어를 일일이 다시 설정하는 방법도 있겠지만..... 전 window.rootViewController를 새로 설정했습니다.


AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
appDelegate.window.rootViewController = viewController;


이제 설정할때마다 새로 화면을 불러와서 원하는 언어대로 표시합니다~!


Posted by 초보 프로그래머
Programming/iOS2015/01/27 17:16

실행할 디바이스가 시뮬레이터인지 아닌지를 확인하는 매크로가 있다.

이걸 확인하는 방법은

#ifndef TARGET_IPHONE_SIMULATOR

#endif

가 아니다!!!!

#if !TARGET_IPHONE_SIMULATOR

#endif

이거다....

Posted by 초보 프로그래머
TAG ios, Xcode