2012-10-19 6 views
0

저는 Storyboard와 함께 xcode 4.5를 사용하고 있습니다. 나는 행운이없이 겉으로보기에는 매우 간단하게하려고합니다. 녹색 부분은 내가 다음 코드UIView의 크기를 조정할 수 없습니다

을 추가 한의 viewDidLoad 방법에있어서, (100)

의 높이를 가지고있는 UIView입니다 여기 이미지에 http://www.shopow.co.uk/assets/storyboard-view.png를 볼 수있는 내 스토리 보드보기에서 나는 UIView의 구성 요소를 배치했다 내가 물건의 크기를 조정에 대해 읽은 나는 로그 창에서 출력은 다음과

2012-10-19 13:05:28.015 TableTest[54318:c07] View Height: 460.000000 
2012-10-19 13:05:28.016 TableTest[54318:c07] View Height: 300.000000 

공지 사항을 보여주고 있지만, (300)는 높은 그러나이 발생하지 않습니다로 크기를 조정 녹색 섹션을 가정 줄에서

NSLog(@"View Height: %f", self.testView.bounds.size.height); 

CGRect viewFrame = self.testView.frame; 
CGSize newSize = CGSizeMake(viewFrame.size.width, 300); 
viewFrame.size = newSize; 
self.testView.frame = viewFrame; 

NSLog(@"View Height: %f", self.testView.bounds.size.height); 

초기 높이 bei 뭔가를 의미 할 수있는 100보다는 460 ng!

아이폰 OS 시뮬레이터는 내가 예상대로 내가 작동하지 않는이 말할 수있는 지금까지 뭔가를 분명 내려다 보이는해야이 http://www.shopow.co.uk/assets/simulator-view.png

을 보여줍니다. 모든 지침은 크게 감사하겠습니다.

+1

은 grean보기에 오른쪽으로 연결된 testView입니까?그것은 당신이 컨트롤러의보기에 연결 한 것 같습니다. – xfx

+0

안녕하세요, UIView를 추가하기 위해 그냥 드래그하여 '@property (strong, nonatomic) IBOutlet UIView * testView;와 같은 .h 파일의 속성으로 연결했습니다. .m 파일에서 합성했다. 내가 다른 방식으로해야할까요? – olliefinn

답변

0

문제를 해결할 수 있는지 확실하지 않지만 실제로는 viewDidLoad이 아닌 viewWillAppear에서보기의 크기를 조정해야합니다.

viewDidLoad 문자 그대로 '보기가로드되었습니다'라는 의미입니다. 그러나이 시점에서 펜촉은 예상대로 뷰를 설정하지 않았을 수 있습니다. 테스트 용으로

, 로그인 시도에서 다음 두 viewDidLoadviewWillAppear

NSLog (@ "프레임 %의 @"NSStringFromCGRect (self.view.frame));

두 방법 모두 다른 결과를 얻게됩니다. viewWillAppear 방법은보기가 설정되고 표시 할 준비가되면 더 정확할 가능성이 큽니다.

저는 개인적으로 인터페이스 빌더를 사용하지 않기 때문에 다루지 않는 것보다 더 많은 두통을 유발할 수 있습니다. 그러나 자동 크기 조정 마스크 또는 탄성 구속 조건이 설정되어있어 뷰의 크기에 영향을 미칩니 까?

+0

안녕하세요, 다른 의견에서 언급했듯이'viewWillAppear' 및'viewDidAppear' 메서드에서 구현하려고했지만 동일한 결과가있었습니다. 나는 그것들을 전혀 조정하지 않았지만 그것들이 어떤 문제를 일으키고 있는지를 알기 위해 제약을 조사 할 것이고 나는 디폴트 설정으로 크기 조정이 가능할 것이라고 생각할 것이다. – olliefinn

+0

기본적으로 자동 크기 조정은 뷰의 모든 크기를 제한하도록 설정되어 있다고 생각합니다. IB를 점검하고 모든 제한 조건이있는 경우이를 제거하십시오. 그 외에는 다른 것이있을 수 있습니다. – CaptainRedmuff

+0

하위 뷰의 크기를 조정하지 않는 모든 조건을 제거합니다. 나는 하나의 스토리 보드 씬으로 새로운 프로젝트를 만들었고 같은 코드를 사용하여 다른 것을 배제하고 여전히 똑같은 일이 일어나도록 시도했다. 또한 자동 레이아웃 켜기/끄기, 제약 조건이 제거 된 경우 또는 그렇지 않은 경우 모두 발생합니다. 나는 이것에 잘 고착되어 있으며, 나는 내가하는 일을 비교할 수 있도록 내가 볼 수있는 곳에서도 샘플을 찾을 수 없다. – olliefinn

0

@CaptainRedmuff와 마찬가지로 잘못된 방법으로 호출합니다. 뷰가로드 된 후 viewDidLoad이 호출됩니다. 이는 프레임이 이미 설정되었음을 의미합니다. 찾고있는 방법은 loadView입니다. viewWillAppear:animatedviewDidAppear:animatedviewDidLoad 이후에 호출됩니다.

+0

안녕하세요, 이제 코드를 'loadView' 메소드로 구현 했으므로 이제는 동일한 결과가 나타납니다. 나는 또한 같은 결과를 가진'viewWillAppear'와'viewDidAppear' 메소드에서 시도했다. – olliefinn

0

OP는 그가 어떻게 해결했는지 분명하지 않았습니다. 다른 사람이이 문제를 겪고있는 경우.

자동으로 레이아웃이 혼란을 일으키기 때문에 프로그래밍 방식으로 속성의 크기를 변경하거나 속성을 변경하는 경우에도 스토리 보드에 표시되는 레이아웃과 동일한 레이아웃이 표시되는 경우입니다.

프로그래밍 방식으로 변경하려는보기를 선택하고 특성 창에서 파일 검사기로 이동하십시오. 자동 레이아웃 사용 옆의 확인란을 선택 해제하십시오. 다시 실행하면 문제가 마술처럼 사라지는 것을 알 수 있습니다.

관련 문제