Feb 28
alonesiphone camera, imagepicker, ios, iPad, iphone, picker, uiimagepicker, 아이폰, 애플
예전 협박편지를 만들 때나 유사 앱을 만들 때 경험했던 (쉽게 할 수 있는 실수, 그리고 자주 깜빡하는) 문제여서 포스팅해봅니다.
UIImagePicker를 사용해서 카메라에서 촬영한 이미지나 앨범에서 선택한 이미지를 view에 붙이고 나면,
그 view에 add되어있는 다른 image view들이 사라지는 경우가 있습니다.
-_-; 황당해서 view들을 별도로 가지고 있다가 다시 add 해주기도 했었던 기억이 나네요.
문제의 원인은 UIImagePicker를 presentModalViewController:animated: method로 띄워주는 View controller가 최상단에 있는 View Controller가 아니어서 생기는 문제였습니다. 이런 이상한 (strange) 현상에 대한 대한 토론 글도 있었는데.. 링크를 잃어 버렸습니다.
이와 관련된 문서는 Dev Doc의 UIImagePicker 부분을 보면 아래와 같이 명시되어있습니다 (사용법 4번째 단계)
Present the user interface by calling the presentModalViewController:animated: method of the currently active view controller, passing your configured image picker controller as the new view controller.
즉, UIImagePicker를 띄울 때, 띄우는 view controller가 그 시점에서 최 상위에 있지 않으면 이런 문제가 발생합니다.
Feb 25
alonesiphone apple, compare, file, filemerge, ios, iPad, iphone, Mac, Util, 비교, 애플, 코드 비교
소스 코드 비교를 위해 FileMerge를 사용해보니 심플하고 좋네요
폴더를 지정해서 비교할 수도 있고, 변경된 파일만 목록에 보여주기 등 필터링 기능도 마음에 듭니다.
아래에 있고
/Developer/Applications/Utilities/FileMerge.app
아래 그림과 같습니다.
Feb 24
alonesiphone cgaffinetransform, cgpoint, cgrect, dev, ios, iPad, iphone, nsuserdefaults, 개발, 아이폰, 애플
CGRect, CGPoint, CGAffineTransform등의 구조체를 NSUserDefaults에 바로 넣기가 애매할 것입니다.
NSStringFromCGRect() 와 CGRectFromString() 시리즈 함수들을 이용해서 NSString으로 변환해서 처리하면 되겠죠?
CGRect aRect1 = CGRectMake(10, 10, 100, 200);
NSString* aRectStr = NSStringFromCGRect(aRect1);
NSLog(@"%@", aRectStr);
CGPoint aPoint1 = CGPointMake(1.0, 20.0);
NSString* aPointStr = NSStringFromCGPoint(aPoint1);
NSLog(@"%@", aPointStr);
CGAffineTransform t1 = CGAffineTransformMakeRotation(M_PI/2.0);
NSString* tStr = NSStringFromCGAffineTransform(t1);
NSLog(@"%@", tStr);
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:aRectStr forKey:@"rect"];
[defaults setObject:aPointStr forKey:@"point"];
[defaults setObject:tStr forKey:@"transform"];
[defaults synchronize];
CGRect aRect2 = CGRectFromString( (NSString*)[defaults objectForKey:@"rect"] );
CGPoint aPoint2 = CGPointFromString((NSString*)[defaults objectForKey:@"point"] );
CGAffineTransform t2 = CGAffineTransformFromString((NSString*)[defaults objectForKey:@"transform"]);
Ref: http://al-lea.blogspot.com/2011/01/iphone-dev-stupidity-140-encode-cgrect.html