2012-02-24 3 views
0

어떻게 작동하는지 이해할 수 없습니다. 내 UIViewController .xib 파일에 UIView 개체를 그릴 경우 UIView 자체를 다시 그립니다. 나는있는 UIViewController의 viewDidLoad에프로그래밍 방식으로 UIView 서브 클래스 추가하기

CustomView *v = [[CustomView alloc] initWithFrame:self.view.frame]; 
[self.view addSubview:v]; 

CustomView : UIView

처럼 서브 뷰에 추가하면있는 CustomView는 자신을 그릴 수 없습니다. 나는 그 때 시도했다

[self.view setNeedsDisplay]; 

나는 아직도 아무것도 얻지 않는다. 그냥 흰색 배경 (내가 전에 얻었던 검은 배경과 다름). 그러나 나의 그림의 어느 것도. 프로그래밍 방식으로 UIView를 추가하면 어떻게 작동합니까? 감사.

+1

당신이 initWithCoder'에서 초기화 로직을 수행합니다'? 이 초기화는 nib 파일에서 뷰가로드 될 때'initWithFrame :'대신에 호출된다. – titaniumdecoy

+0

@titaniumdecoy 아니오 초기화가 없습니다. 나는 그것에 관해 무언가를 읽었던 것을 기억하고 그것에 관한 몇 가지 게시물을 보았다. initWithCoder를 호출합니까? 아니면 여전히 initWithFrame을 호출합니까? 또한, initWithCoder에서 모든 것이 내 drawRect에서 완료되었으므로, 무엇을 초기화합니까? –

+0

CustomView 또는 적어도 관련 부분을 공유해야 할 수도 있습니다. – dbrajkovic

답변

0

CustomView의 프레임을 잘못 설정했을 수도 있습니다.

각보기에는 왼쪽 위 모서리에 (0, 0)이있는 자체 좌표 공간이 있습니다. 보기의 frame부모의 좌표 공간에 있습니다. 즉,보기의 frame을 수퍼 뷰의 frame과 동일하게 설정하는 것이 종종 잘못되었다는 의미입니다.

보기의 bounds보기의 자신의 좌표 공간에 있습니다. 따라서 귀하의 CustomView이 수퍼 뷰를 정확히 커버하도록하려면 CustomViewframe을 수퍼 뷰의 bounds으로 설정해야합니다.

이 시도 :

CustomView *v = [[CustomView alloc] initWithFrame:self.view.bounds]; 
관련 문제