Programming/iOS2013.11.26 15:09

iOS7 으로 버전을 변경하여 빌드를 해보면  sizeWithFont:constrainedToSize:lineBreakMode 로 계산한 값들이 정확하지 않다는 것을 알 수 있다.

구글신의 도움으로 다음과 같은 방법으로 해결하였습니다.

아래 코드는 UILabel의 Category로 구현된 내용입니다.

- (CGSize)boundingSize:(CGSize)size
{
    CGSize resultSize;

#ifdef __IPHONE_7_0
    if ([self.text respondsToSelector:@selector(boundingRectWithSize:options:context:)]) {
        resultSize = [self.text boundingRectWithSize:size
                                             options:NSStringDrawingUsesLineFragmentOrigin
                                          attributes:@{NSFontAttributeName:self.font}
                                             context:nil].size;
    }
    else {
#   pragma clang diagnostic push
#   pragma clang diagnostic ignored "-Wdeprecated-declarations"
        resultSize = [self.text sizeWithFont:self.font
                           constrainedToSize:size
                               lineBreakMode:NSLineBreakByWordWrapping];
#   pragma clang diagnostic pop
    }
#else
#   pragma clang diagnostic push
#   pragma clang diagnostic ignored "-Wdeprecated-declarations"
    resultSize = [self.text sizeWithFont:self.font
                       constrainedToSize:size
                           lineBreakMode:NSLineBreakByWordWrapping];
#   pragma clang diagnostic pop
#endif
    resultSize.width = ceil(resultSize.width);
    resultSize.height = ceil(resultSize.height);
    
    return resultSize;
}


NSString Category 구현


NSString+Size.h

#import 

@interface NSString (Size)

- (CGSize)boundingSize:(CGSize)size font:(UIFont*)font;

@end

NSString+Size.m
#import "NSString+Size.h"

@implementation NSString (Size)

- (CGSize)boundingSize:(CGSize)size font:(UIFont*)font
{
    CGSize resultSize;
    
#ifdef __IPHONE_7_0
    if ([self respondsToSelector:@selector(boundingRectWithSize:options:context:)]) {
        resultSize = [self boundingRectWithSize:size
                                        options:NSStringDrawingUsesLineFragmentOrigin
                                     attributes:@{NSFontAttributeName:font}
                                        context:nil].size;
    }
    else {
#   pragma clang diagnostic push
#   pragma clang diagnostic ignored "-Wdeprecated-declarations"
        resultSize = [self sizeWithFont:font
                      constrainedToSize:size
                          lineBreakMode:NSLineBreakByWordWrapping];
#   pragma clang diagnostic pop
    }
#else
#   pragma clang diagnostic push
#   pragma clang diagnostic ignored "-Wdeprecated-declarations"
    resultSize = [self sizeWithFont:font
                  constrainedToSize:size
                      lineBreakMode:NSLineBreakByWordWrapping];
#   pragma clang diagnostic pop
#endif
    resultSize.width = ceil(resultSize.width);
    resultSize.height = ceil(resultSize.height);
    
    return resultSize;
}

@end


신고
Posted by 초프(초보 프로그래머)
Programming/iOS2013.11.25 15:01

iOS SDK 7에서 statusBar style변경이 마음대로 되지 않는다.

UIStatusBarStyleLightContent로 지정하여 white color로 나오게 하려고 하는데 계속 black으로 나오네요.

해결 방법은 다음과 같습니다.


AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}

[Scheme]-Info.plist 

UIViewControllerBasedStatusBarAppearance

<false></false> 는 <false/> 로 쓰셔도 됩니다.


신고
Posted by 초프(초보 프로그래머)
Programming/iOS2013.11.07 16:31

푸시를 받아서 알림센터에 생긴 알림은 터치하여 앱이 실행되면 제거해야 합니다.

알아서 지워지는지 알았는데... 안 지워주네요;


구글 검색을 통해 여러가지 방법을 알아냈지만 성공한 방법은 아래와 같습니다.


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    (생략)

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
}


badgeNumber 를 1->0 으로 설정하는 이유는 정확히 모르겠지만 저렇게 하지 않으면 지워지지 않습니다.


신고
Posted by 초프(초보 프로그래머)
Programming/iOS2013.10.14 18:42

Xcode5 에서 iOS 6.1 target 으로 빌드를 해도 레이아웃이 이상해지는 현상이 발견됩니다.

그중에서 가장 큰 문제는 ViewController의 view가 NavigationBar 밑에 있어 가려진다는 것입니다.

구글신의 도움으로 다음과 같은 코드를 넣으므로써 해결했습니다.

self.navigationController.navigationBar.translucent = NO;
self.navigationController.toolbar.translucent = NO;

출처 : http://stackoverflow.com/questions/18935079/views-converted-to-ios7-flow-under-navigation-bottom-bars-in-ios6

신고
Posted by 초프(초보 프로그래머)
Programming/iOS2013.09.24 12:44

XCode 새버전으로 업데이트 하기 전에 아래 경로에서 sdk파일들을 복사해 다른곳에 보관하도록 한다.


/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs


Xcode 업데이트 후 위 경로에 복사했던 파일들을 붙여놓으면 하위버전으로 빌드가 가능함

신고
Posted by 초프(초보 프로그래머)
TAG Xcode
Programming/iOS2013.09.16 11:55

헷갈리는 중국어 코드를 안드로이드와 비교


 

 iOS

 Android 

 간체 (중국)

 zh-Hans

zh-rCN

 번체 (대만)

 zh-Hant

zh-tTW


신고
Posted by 초프(초보 프로그래머)
Programming/iOS2013.04.10 16:45

앱에 디자인을 적용하다보면 패턴이 들어가 있는 이미지가 많이 있습니다.

기존에는 방식을 몰라 무식하게 통짜 패턴 이미지를 넣어서 배경 처리했는데.... 방법이 있었다.

검색 1분만 했었어도 찾을 수 있는 내용이네요.

사용법은 간단하며 아래와 같습니다.





위 두 이미지를 패턴으로 만들어 배경에 지정하려고 합니다.


UIViewController 의 UIView 에는 스티븐잡스 패턴

UIView 안의 UIImageView 에는 빌게이츠 패턴



- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    
    self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"steve-jobs-64x64.jpg"]];
	
	imageView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"bill-gates.jpg"]];
}






생각보다 너무 간단하네...!!!






신고
Posted by 초프(초보 프로그래머)
Programming/iOS2013.02.17 01:44

iOS에서 UITableView를 이용하여 리스트를 구현하다 보면 새로운 정보를 가져오기 위해 pull down to refresh나 기존 정보를 가져오는 load more 기능을 많이 사용하게 됩니다.

코드양은 많지 않지만 리스트별로 다 구현해야 한다는 점이 불편하여 간단하게 사용할 방법이 없을까 해서 만들게 된 라이브러리입니다.

기본 기능 밖에 제공하지 않고 있지만 조금씩 발전시켜 나갈까 합니다.





예제의 코드를 블로그에 남기고 싶었지만 Syntax Highlight 가 제대로 먹히지 않네요... ㅜ.ㅜ


그래서 소스 코드를 올려 놓은 GitHub 주소를 남깁니다.


https://github.com/yoonhg84/YHGTableView

신고
Posted by 초프(초보 프로그래머)
Programming/iOS2013.01.24 00:55

ui builder 에서 title 을 고정하는 것이 아니라 코드에서 동적으로 변경하려면 다음과 같이 하면 됩니다.

self.title = @"title";


신고
Posted by 초프(초보 프로그래머)
Programming/iOS2013.01.20 23:58

navigation 을 사용하면 push 되어 back버튼을 클릭하면 이전 뷰로 이동합니다.

하지만 modal view를 띄웠을 때는 다시 돌아 가는 방법을 찾기 힘듭니다.

IBAction 을 이용해서 modal view 를 닫아 줘야 합니다.


[self dismissModalViewControllerAnimated: NO];


신고
Posted by 초프(초보 프로그래머)
TAG ios, iphone, modal