NSView ํฌ๊ธฐ๋ณ๊ฒฝ ์ ํํ๊ธฐ.
์๋์ฐ์ ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋จ์ ๋ฐ๋ผ ์๋ธ๋ทฐ์ ํฌ๊ธฐ๋ฅผ ๋ฆฌ์ฌ์ด์ง ํ๋ ๊ฒฝ์ฐ
ํ์ฌ NSView ์ ํฌ๊ธฐ๋ฅผ ์ ํํ๋ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ต๋๋ค. (์ด๋ฅผ ์ํ ์ค์ ๊ฐ์ ๊ฑด ์๋๊ตฐ์..)
์ผ๋จ์ NSView ๋ฅผ ์์๋ฐ์ ์ปค์คํ
๋ทฐ๋ฅผ ์์ฑํ๊ณ ,ย
์๋์ ๊ฐ์ด Bounds ๊ฐ ๋ณ๊ฒฝ๋๋ Notification์ ํ์ฉํ๋๋ก ์ค์ ํ๊ณ ,
Notification ์ ๋ฑ๋กํฉ๋๋ค.
[self setPostsBoundsChangedNotifications:YES];
ย [[NSNotificationCenter defaultCenter] addObserver:selfย
ย selector:@selector(viewContentFrameDidChange:)
ย name:NSViewFrameDidChangeNotification
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];