2008年6月19日木曜日

NSView+NSScrollViewであってもNSViewから制御

NSViewの派生,CustomViewをNSScrollViewに載せている状態で任意のスクロール位置に表示を移したいときはCustomView(NSView)の
- (void)scrollPoint:(NSPoint)aPoint
を使う.(aPointは表示の左上となる.表示がNSView自身を超える場合はそれなりに内側へ調整される.)

NSViewを
- (void)scaleUnitSquareToSize:(NSSize)newUnitSize
で拡大縮小していたとしても与える値はもとの位置の情報でOK(NSViewのどこを出したいかという事だからね).

いまどこを表示しているかはNSViewの
- (NSRect)visibleRect
でわかる.



追記 06/20
ちなみにscaleはframe.size.width/bounds.size.width, frame.size.height/bounds.size.heightで求められる(ハズ).

追記1 06/20
なるほどもうちょっとスマート.
const NSSize unitSize = { 1.0, 1.0 };
- (NSSize) scale
{
return [self convertSize: unitSize fromView: nil];
}
”Technical Q&A QA1346: Finding an NSView's current magnification.”より

0 件のコメント: