2014-07-10 3 views
1

iOS 앱을 개발하고 이상한 문제가 발생했습니다. 뷰의 크기를 조정하는 로그를 작성하고 있으므로 뷰가로드되면 인터페이스 작성기에서 크기를 조정 한 뷰의 초기 크기를 보유한 ivar가 있습니다. 초기 CGFrame rect는 다음과 같습니다 (x = 0, y = 63, width = 284, height = 705).이상한 크기의 CGRect

filesFrame = self.fileView.frame; 

내가 self.fileView.frame 터치 유일한 장소는 다음과 같습니다 : 나는 초기 값을 유지하기 위해 사용하는 코드는 작성하지 못했습니다 서로 후 두 개의 별도의 장소에

self.fileView.frame = filesFrame; 
self.fileView.frame = fullFilesFrame;  

이 있습니다 로 fullFilesFrame 정의된다 : 프레임 RECT 원점 지금 CGPoint

fullFilesFrame = CGRectMake(self.view.frame.origin.x,self.view.frame.origin.y+63, 
    self.view.frame.size.height,self.view.frame.size.width+63); 

I 초기 프레임으로 크기를 조정 한 후 내 값을 확인하다,536 (X = 0, Y는 63 =)CGSize (너비 = 28, 높이 = 961)

어떻게 될 수 있습니까? 조회수의 크기를 조정하는 것이 처음이며 Im는 iOS에도 상당히 새로운 것입니다.

+0

아마도 자동 설정 마스크가 잘못 설정 되었기 때문일 수 있습니다. 그리고 당신은 자동 레이아웃을 사용하고 있습니까? – kambala

답변

1

내가 코멘트에 넣고하려고했지만, 너무, 너무 오래이다 : 나는이 상황에서 좋아

한 트릭은 내가 함께하는 데 문제 뷰의 클래스에 setFrame:을 무시하는 것입니다 재정의 된 메서드에서 중단 점을 설정합니다. 그렇게하면 프레임이 변경된 시점을 확인하고 호출 스택을 살펴볼 수 있습니다.

setFrame:을 재정의하는 것은 항상 쉽지는 않습니다. frame 속성은 직접 설정할 수 있지만 도에서 파생 수있는 뷰의 boundscenter, 당신은 설정 일을 찾아해야 할 수도 있으므로 뷰의 bounds 또는 뷰의 center 대신 frame의.

또한 뷰의 ID가 transform이 아닌 경우 frame 속성이 매우 이상하게 동작합니다. 보기에 비 동일성 변환을 설정하는 경우 프레임 속성을 모두 피해야합니다.

+0

자동 크기 조정으로 범위 또는 중심을 설정할 수 있습니까? – rady

+0

나는 그것을 너무 조심스럽게 들여다 보지 않았지만, 안전한 측면에 있기 위해 자동 크기 조정 (및 UIKit 일반적으로) *이 속성 중 하나를 만질 수도 있다고 가정합니다. –