8
¿Cómo centrar un NSView dentro de un NSScrollView como lo hace la vista previa?Centrar una NSView dentro de un NSScrollView
¿Cómo centrar un NSView dentro de un NSScrollView como lo hace la vista previa?Centrar una NSView dentro de un NSScrollView
Lea la sección Scroll View Programming Guide al desplazarse a una posición específica. Hay ejemplos allí para arriba o abajo. Simplemente cambiaría las matemáticas para calcular el origen en el medio de su NSView. Algo como:
-(void)scrollToCenter:(NSScrollView*)scrollView
{
const CGFloat midX = NSMidX([[scrollView documentView] bounds]);
const CGFloat midY = NSMidY([[scrollView documentView] bounds]);
const CGFloat halfWidth = NSWidth([[scrollView contentView] frame])/2.0;
const CGFloat halfHeight = NSHeight([[scrollView contentView] frame])/2.0;
NSPoint newOrigin;
if([[scrollView documentView] isFlipped])
{
newOrigin = NSMakePoint(midX - halfWidth, midY + halfHeight);
}
else
{
newOrigin = NSMakePoint(midX - halfWidth, midY - halfHeight);
}
[[scrollView documentView] scrollPoint:newOrigin];
}
Esto no funciona cuando la vista del documento es más pequeña que la vista de desplazamiento. La vista del documento está anclada en la parte inferior izquierda (o arriba a la izquierda si está volteada). –