2013-03-08 2 views
0

내가 -viewDidLoad에서보기에 추가 일부 사용자 지정 버튼이 나는 그들이과 같이, 뷰 내부의 상하 중앙에 원하는 :수직 뷰, 자동 크기와 아이폰 5 4를 중심으로 "화면

self.customButton.center = CGPointMake(98.f, self.view.center.y); 

그러나,보기 높이가 416 (480 - 20 (상태 표시 줄 높이) - 44 (탐색 모음 높이)) 일 것으로 예상되는 3.5 인치 장치에서도 높이가 504.0입니다.

xib의 뷰는 "Retina 4 Fullscreen"을 사용하지만 자유형으로 설정하면 도움이되지 않습니다. 나는 확실히 높이 차이를 설명하기 위해 두 xib을 원하지 않습니다.

저는 UIScreen을 사용할 수 있지만 높이 차이를 알고 싶다고 생각합니다.

EDIT : 이상한 것은 -viewWillAppear에서 416.0으로 정확하게 설정됩니다. [super viewDidLoad]이 나를 넘어선 후에 이것이 처리되지 않는 이유는 무엇입니까?

사람들이 어떻게 처리하나요? Autolayout은 아마도 이것을 처리 할 것이지만 iOS5 호환 방법이 필요합니다. 자동 크기 조정이 어떻게 든 "센터링"을 처리 할 수 ​​있습니까?

+0

center라는 레이아웃 제약이 있습니다. 시도해 볼 수도 있습니다. – Douglas

+0

나는 당신이 autolayout를 말하는 것이라고 믿는다. iOS6 + – Morrowless

+0

죄송합니다, 그 마지막 문장을 잘못 읽었습니다! – Douglas

답변

8

iOS5에는 자동 레이아웃 기능이 없지만 자동 크기 지정 마스크가 있습니다. IB에서 수직으로 뷰의 중심을 정하면 인스펙터로 이동하여 자동 평면 마스크에서 수직 스트럿과 스프링을 선택 해제하면 뷰가 4 "및 3.5"스크린 모두에서 수직으로 가운데에 유지됩니다.

또는 viewDidLoad 메서드에서 코드에서이 작업을 수행 할 수 있습니다. 그냥 당신이 지금과 같이 뷰를 중심으로이 같은 autoresizingMask을 설정

self.customButton.autoresizingMask = (UIViewAutoresizingFlexibleBottomMargin | \ 
             UIViewAutoresizingFlexibleTopMargin); 
1

편집 : 이상한 일이다, -viewWillAppear에보기 높이가 올바르게 416.0으로 설정됩니다. [super viewDidLoad]이 나를 넘어선 후에 이것이 처리되지 않는 이유는 무엇입니까?

보기의 크기를 조정하는 것이보기를로드하는 것이 아니기 때문에! -viewDidLoad 아마이 같은 비트를 보이는 방법에 -view에서 호출됩니다 :

-(UIView*)view 
{ 
    if (!_view) 
    { 
    [self loadView]; 
    [self viewDidLoad]; 
    } 
    return _view; 
} 

-(void)loadView 
{ 
    // Some code to load the view from a nib/storyboard... 
} 

뷰가 yourViewController.view.frame = ... 같은 전화 크기를 조정 얻을 것이다, 그러나 이것은 후에 만 ​​뷰가로드 후 (따라서 일어날 수 있습니다 -viewDidLoad)가 호출됩니다.

일부 자동 크기 조정 마스크를 설정하십시오. 그게 그들이 그곳에있는 이유입니다.