2014-12-29 13 views
1

안녕하세요, IOS 응용 프로그램을 개발 중입니다. 내 응용 프로그램에서 내 너비 높이 X 및 Y 값을 확인하고 있습니다. IB에서는 오른쪽 상단 및 높이 제약 조건을 자동 레이아웃을 사용하고 있습니다. 폭 제약 조건을 지정하지 않았습니다. viewDidLoad 내 너비 높이 X 및 Y에 대한 값을 확인합니다. 폭 값의 경우 IOS8에 예기치 않은 값을 제공하지만 IOS7에서는 제공합니다 적절한 값. IOS7의 경우 예상되는 너비 320을 제공하고 IOS8의 경우 예상하지 못하는 600을 제공합니다.IOS는 IOS7 및 IOS8 버전에서 예상치 못한 값을 제공합니다.

NSLog(@"%f %f %f %f ", _sampleView.frame.size.height, _sampleView.frame.size.width, _sampleView.frame.origin.x, 
     _sampleView.frame.origin.y); 

내가 뭘 하려는지 프로그래밍 방식으로 이전에 현재보기를 통해 하나 이상의보기를 추가하려고합니다. 나는 다음과 같은 방식으로 이것을했다 : 위의 것은 IOS7에서는 잘 작동하지만 IOS8에서는 잘 작동하지 않는다.

이 문제를 해결하는 방법. 내가 뭐 잘못하고 있니? 도움이 필요해. 고맙습니다. 견해가 아직 당신은 아직도 그 크기를 얻을 화면으로 크기가 조정되지 않은 이후

+0

을 당신은 아이폰 OS 8 사과 발표했다 나중에 크기 클래스 및 UIView의 폭 높이를 엑스 코드 6으로 프로젝트를 생성해야 '는 수도 600 t는 변경 될 것입니다 ... –

+0

그런 경우 런타임에서 올바른 크기를 얻는 방법. – nilkash

+0

uiviewcontroller 뷰 위에 추가하는 두 번째 뷰 ur ... _sampleview addsubview에 추가 : subview –

답변

2

은 엑스 코드 6 일 스토리 보드는 있는 viewDidLoad에 때문에, 600 × 600의 화면 크기로 시작합니다.

요소의 화면 크기를 알고 싶다면 화면에 올바르게 배치하고 크기를 조정 한 후보아야합니다. 보기 컨트롤러의 viewDidLayoutSubviews에서 확인할 수 있습니다. 무한주기를 일으키는 원인이 방금 추가 한 뷰를 배치 할 경우에 다시 자체를 트리거로

-(void)viewDidLayoutSubviews{ 
    [super viewDidLayoutSubviews]; 

    NSLog(@"%f %f %f %f ", _sampleView.frame.size.height, _sampleView.frame.size.width, _sampleView.frame.origin.x, _sampleView.frame.origin.y); 
} 

당신은 그러나, 방법의 모든 하위 뷰를 추가해서는 안된다. 올바른보기 크기를 계산할 때만 사용하십시오.

실제로 해당 메서드에 대한 뷰를 추가하려면 컨트롤 부울 또는 이와 유사한 것을 사용하여 한 번만 수행해야합니다.

보다 정확한 방법으로보기를 추가하려면 추가 할 새보기에 프로그래밍 방식으로 자동 레이아웃 제약 조건을 추가하여 원래의 것과 비슷하게 작동하는지 확인하십시오. 프로그램 자동 레이아웃 사용하는 방법에 대한 튜토리얼이 문서에

참조 : http://www.thinkandbuild.it/learn-to-love-auto-layout-programmatically/

+0

재생 해 주셔서 감사합니다. 나는 당신의 해결책을 시도하고 알게 될 것입니다. 이 상황을 처리하는 올바른 방법입니까? – nilkash

+0

네, 제대로 작동하는데 도움을 주셔서 감사합니다. – nilkash

+0

경우에 따라 적절한 값을 얻지 만 일부 경우에는 여전히 DidLayoutSubViews 뷰 내부에서 600 값을 얻습니다. – nilkash