UIViewとdrawRect:

例えばとても広いNSViewを、NSScrollViewに入れて表示させると、画面に表示されてる、あるいは描き直しが必要部分がdrawRect:に渡されて、その中身の描画だけを行えばいい。と思っていた。だから、UIViewをUIScrollViewに入れたときも同じだろうと思っていたのだが…どうも違う。drawRect:は最初の一回、それもUIViewのframe一杯のものが送られてくるようだ。またCocoaCocoa Touchの違いの罠に嵌ってしまった。
これじゃ困るってんでいろいろ調べてみると、UIScrollViewのサブクラス化が一番妥当だと思われる。contentOffsetでどれだけスクロールしているかは分かるから、それに応じて自前で座標変換して描画すれば出来るだろう。UITextViewやUITableViewがUIScrollViewのサブビューではなくサブクラスであったりするのはこういうことか。