NSView 크기변경 제한하기.
윈도우의 크기가 변경됨에 따라 서브뷰의 크기를 리사이징 하는 경우
현재 NSView 의 크기를 제한하는 방법은 아래와 같습니다. (이를 위한 설정같은 건 없더군요..)
일단은 NSView 를 상속받은 커스텀 뷰를 생성하고,
아래와 같이 Bounds 가 변경되는 Notification을 허용하도록 설정하고,
Notification 을 등록합니다.
{
[self setPostsBoundsChangedNotifications:YES];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(viewContentFrameDidChange:)
name:NSViewFrameDidChangeNotification
object:self];
}
Notification을 수신할 때 처리한 메소드에서 크기변경을 제한하기 위한 코드를
삽입하면 됩니다. 아래 내용은 테스트코드입니다.
- (void) viewContentFrameDidChange:(NSNotification *)notification
{
NSSize superSize = [[self superview] bounds].size;
NSSize changedSize = [self bounds].size;
// 현재뷰가 지정된 크기보다 커지면 최대값으로 설정
if (limitedMaximumWidth <= superSize.width)
{
changedSize.width = limitedMaximumWidth;
[self setFrameSize:changedSize];
}
// 현재뷰가 지정된 크기보다 작아지면 최소값으로 설정
else if (limitedMinimumWidth >= superSize.width)
{
changedSize.width = limitedMinimumWidth;
[self setFrameSize:changedSize];
}
// 상위뷰가 최대값보다 작아지면 상위뷰의 크기로 설정
else if (limitedMaximumWidth >= superSize.width)
{
changedSize.width = superSize.width;
[self setFrameSize:changedSize];
}
}












