BLOG main image
분류 전체보기 (92)
Cocoa Touch (11)
Cocoa (10)
Objective-C (13)
Swift (6)
Development (11)
Tools (11)
Books (7)
etc (21)
Application release (1)
Document Project (1)
105,849 Visitors up to today!
Today 0 hit, Yesterday 5 hit
daisy rss
tistory 티스토리 가입하기!
'cocoa touch'에 해당되는 글 2건
2010. 12. 26. 23:34
MainWindow.xib에다 view controller를 인스턴스화 시켜놓고 그것을 App delegate의 아웃렛에 연결해서 아래와 같은 코드로 윈도우에 올리는 방식으로 흔히들 뷰를 붙이게 된다.

[[self window] addSubview:[mViewController view]];

[[self window] makeKeyAndVisible];


이 방식은 뷰 기반의 아이폰 프로젝트를 처음 생성하면 볼 수 있다.

하지만 이렇게 사용하지 않고 가끔 뷰 컨트롤러를  커스터마이징 해서 사용할려고 하면 아래쪽에 20픽셀이 위로 올라가서 뷰가 붙어 버리는 현상을 만나게 된다. 실제 뷰가 놓여야 할 위치가 (0, 20, 320, 460)인데 (0, 0, 320, 460)에 붙어버리기 때문에 발생하는 현상이다. 이때 이 현상을 조절하는 view controller의 attribute에 있는 "resize view from nib" 옵션(이 옵션을 켜두면 알아서 20픽셀 아래로 정확히 우리가 원하는 위치에 뷰가 붙어준다.)은 Interface Builder 환경하에서 뷰 컨트롤러의 인스턴스화 된 객체에 대해서만 사용할 수 있다. 즉, 코드로 뷰 컨트롤러를 동적으로 올리겠다고 생각했다면 이 옵션 자체를 볼 수가 없다.

그러다보니 항상 20픽셀의 오차가 생기고 일반적으로 강제로 setFrame:CGRectMake(0, 20, 320, 460) 같은 코드를 넣게 되는데 이런 하드코딩된 뷰사이즈는 아이패드로 포팅할 때 또는 그 외의 경우에 항상 발목을 잡게 된다.
그러면 어떻게 하면 정확히 현재 내가 표시할 영역을 알 수 있을까? UIScreen에 있는 applicationFrame이 그 역할을 해줄 수 있는데 이건 단순히 status bar가 차지하는 20픽셀 뿐만 아니라 In-Call Status bar영역까지 판단해서 실제 애플리케이션의 프래임 역역을 알려주기 때문에 매우 유용하다. 만일 전화가 와서 In-Call Status bar가 표시되고 있다면 상단의 40픽셀을 제외한 영역을 실제 뷰가 올라갈 영역이라고 알려준다.

즉, 뷰 컨트롤러를 동적으로 올린 후 뷰를 윈도우에 올릴때 정확한 사이즈로 올리는 최선의 방법은 아래와 같은 방법이 되지 않을까 한다.

- (void)viewWillAppear:(BOOL)aAnimated

{

    [super viewWillAppear:aAnimated];

    [[self view] setFrame:[[UIScreen mainScreen] applicationFrame]];

}


Name
Password
Homepage
Secret
2009. 12. 24. 11:00
예전에 잠깐 검토하다가 엄청난 삽질을 해야 한다는 걸 알고 보류해뒀는데 그 사이 누군가 그 삽질을 해놨군요.
폰트에 대해서 매우 잘 알고 있는 사람이 만든것 같습니다. :)
한글도 잘 출력되는 것을 확인했습니다.


라이센스도 착하군요!
Name
Password
Homepage
Secret
prev"" #1 next