8
Comment centrer un NSView dans un NSScrollView comme le fait la fonction «Preview»?Centrer un NSView dans un NSScrollView
Comment centrer un NSView dans un NSScrollView comme le fait la fonction «Preview»?Centrer un NSView dans un NSScrollView
Lire la section Scroll View Programming Guide sur le défilement vers une position spécifique. Il y a des exemples pour le haut ou le bas. Vous devez juste changer le calcul pour calculer l'origine basée sur le milieu de votre NSView. Quelque chose comme:
-(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];
}
Cela ne fonctionne pas lorsque la vue du document est plus petite que la vue défilement. La vue du document est épinglée en bas à gauche (ou en haut à gauche si elle est inversée). –