2013-04-18 2 views
0

이상한 크기 조절 동작이 발생했습니다. 나는 UIView의 크기를 조정할 때UIView가 하위보기의 크기를 조정합니다.

는, 내가 다음 코드는 뷰의 크기를 조정할 것이라고 상상

0에 서브 뷰의 높이가 간다입니다 -하지가 서브 뷰입니다.

view = <UIView: 0x97e68c0; frame = (0 0; 320 400); autoresize = RM+BM; layer = <CALayer: 0x97e5f10>> 
subview = <UIView: 0xb87f510; frame = (0 0; 320 50); autoresize = W+H; layer = <CALayer: 0xb87f020>> 
view = <UIView: 0x97e68c0; frame = (0 0; 320 50); autoresize = RM+BM; layer = <CALayer: 0x97e5f10>> 
subview = <UIView: 0xb87f510; frame = (0 0; 320 0); autoresize = W+H; layer = <CALayer: 0xb87f020>> 

어떤 생각 그러나

NSLog(@"view = %@", view);  
NSLog(@"subview = %@", subview); 
CGRect frame = view.frame; 
frame.size.height = 50; 
view.frame = frame; 
NSLog(@"view = %@", view); 
NSLog(@"subview = %@", subview); 

는 위의 다음과 같은 출력을 얻을 수?

autoresize = W+H; 

이것은 UIView-autoresizingMask의 로그 정보이다

답변

3

키는 로그 출력에서 ​​본 단면도이다. 설명서 here을 확인하십시오. 기본적으로 슈퍼 뷰의 크기를 조정할 때 하위 뷰가 수행해야하는 작업을 설명하는 방법입니다. 그것은 매우 강력합니다.

현재 규칙은 수퍼 뷰의 크기를 조정할 때 너비와 높이의 크기를 조정하고 서브 뷰의 위와 아래의 거리를 수퍼 뷰 좌표계와 관련하여 정적으로 유지하도록 지시합니다. 하위보기가 너무 높지 않으므로 수퍼 뷰의 크기를 많이 조정하면 서브 뷰가 위와 아래 거리를 유지하려고 0 높이로 떨어집니다.

+0

그걸 고쳤습니다. 감사! 인터페이스 작성기를 통해 마스크에서 UIViewAutoresizingFlexibleHeight를 제거하고 매력처럼 작동했습니다. 감사! – bbrame

관련 문제