2012-10-11 3 views
1

방금 ​​NSView에서 드로잉에 대한 실험을하기 위해 새로운 프로젝트 인 GrafLaboratory를 시작했습니다. 주 창에 사용자 지정보기를 추가하고 창 크기가 변경되면 크기를 적용하도록 구성했습니다.NSView 자체의 실제 크기

나는이 내 InitFrameWith 수정 :

- (id)initWithFrame:(NSRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     NSRect r = [self bounds]; 
    } 

    return self; 
} 

내 새로운 응용 프로그램이 처음 시작하고 나는 올바른 값 얻기 [자기 경계] 요청 : {{{0, 50} (600), 450}}. 그런 다음 마우스로 드래그하여 창의 크기를 변경합니다. 내 앱을 다시 시작할 때 initWithFrame은 {{0, 50}, {600, 450}} 같은 값을 반환합니다.

하지만 새로운 크기로 변경되었습니다. 나는 이미 여러 가지를 시도했지만 성공하지는 못했다.

내가 뭘 잘못하고 있는지 실마리가 있습니까? 당신은 프레임 내에서 객체를 초기화 할 때

감사합니다, 로널드

답변

2

initWithFrame에만 관련이 있습니다. 이 사용자 정의 드로잉과 함께 사용자 지정 UIView의가 있다면

, 다음 볼에 : setNeedsDisplay를 호출 및/또는 뷰의 크기가 변경되었을 때에 불려가는

- (void)drawRect:(NSRect)frame 

. 일부 사용자 지정보기로

, 나는 initWithFrame에서 수행 한 한 가지 자동 크기 마스크 설정하는 것입니다 다음 RECT가 변경된 경우 초기화와의 drawRect 모두 그런

// subviews autoresize 
    [self setAutoresizesSubviews:YES]; 
    // set resize masks (springs) 
    [self setAutoresizingMask:(NSViewMaxXMargin | NSViewMinXMargin | 
           NSViewMaxYMargin | NSViewMinYMargin | 
           NSViewHeightSizable | NSViewWidthSizable)]; 

을, 나는 전화를 내 layoutViews는 metod :

- (void)drawRect:(NSRect)frame { 
    ... 
    // called on resize. on init, delegate isn't hooked up so we'll skip 
    if (!NSEqualRects(_prevRect, [self bounds])) 
    { 
     [self layoutViews]; 
    } 

    // stash away rect for comparison so layout view code only happens when the rect changes 
    _prevRect = [self bounds]; 

내 layoutViews에는 맞춤 레이아웃 로직이 있습니다.

희망이 있습니다.

+0

감사합니다. Bryan, 훌륭해. drawRect가 첫 번째 호출에서 {{0, 50}, {600, 450}}을 반환하는 것이 이상하다는 것을 알게되었습니다. 다음 호출은 모두 올바른 크기를 반환합니다. 참조 로그 : 2012-10-11 06 : 12 : 29.035 GrafLaboratory [14723 : 303] rectBounds drawRect :: {{0, 0}, {600, 450}} 2012-10 -11 06 : 12 : 29.069 GrafLaboratory [14723 : 303] rectBounds drawRect :: {{0, 0}, {1041, 803}} 2012-10-11 06 : 17 : 47.643 GrafLaboratory [14723 : 303] rectBounds drawRect : : {{0, 0}, {1039, 796}} 2012-10-11 06 : 17 : 47.658 GrafLaboratory [14723 : 303] rectBounds drawRect :: {{0, 0}, {1039, 795}} –