続いて移動制御の次はサイズ制御。ビューの領域を超えた拡大・縮小ができないように制限を加える。
前回の移動制御とほぼ同様のコードだが微妙に異なる。この為コードは別に用意した。0.1は前回同様境界で点線を表示させる為。
NSRect bounds = [self bounds];
if (nx < 0) {
nw = _rect.size.width + _rect.origin.x;
nx = 0.0;
} else if (nx + nw > bounds.size.width) {
nw = bounds.size.width - nx - 0.1;
} else if (nx + nw < 0) {
nw = -_rect.origin.x;
}
if (ny < 0) {
nh = _rect.size.height + _rect.origin.y;
ny = 0.1;
} else if (ny + nh > bounds.size.height) {
nh = bounds.size.height - ny;
} else if (ny + nh < 0) {
nh = -_rect.origin.y + 0.1;
}
_rect = NSMakeRect(nx, ny, nw, nh);
- - - -
拡大縮小は制約されるようになったがマウスカーソルの移動までは制約していない。この為、ウィンドウの外での動きが拡大縮小に反映されてしまう。マウスの動きを制約すべきだろうか?