前者は RubberBandView#setRubberBandFrame: を実装することで対応する。後者はデリゲートの仕組みを導入しよう。RubberBandView のメンバ変数に _delegate を追加し、大きさが変化する毎にこのオブジェクトへメッセージを送信する。ここではプロトコルを定義して、デリゲートはこのプロトコルに適合するよう条件づけてやる。
@protocol RubberBandDelegate
-(void)changedFrame:(NSRect)frame;
@end
@interface RubberBandView : NSView {
NSRect _rect;
id _delegate;
} そしてサイズ変更や移動時に changedFrame: を投げてやる。
再利用可能にした RubberBandViewを使ったサンプルを作ってみた。

ソース:RubberBand-8.zip
前回そっくりだが構造が違う。サンプルではもう一枚のビュー(ImageView)を導入してここに画像を描いている。この ImageViewを RubberBandViewのデリゲートとして設定すると、RubberBandの変更にともない、ImageView上の画像の大きさや位置もそれに合わせて変更される。
関係はこんな感じ。