4 votes

Question sur les mesures en Objective-C/XCode

Je suis en train de créer une application (desktop) qui est un gestionnaire de mise en page publicitaire. Les mesures du modèle Indesign avec lequel je travaille sont en pouces. Par exemple, le magazine fait 8x10.5 pouces. Pour donner à l'utilisateur une vue de la page du magazine, je place un NSScrollView sur la fenêtre principale et j'utilise une conversion de 72 (pixels par pouce), puis j'affiche les règles, comme suit :

displayPageRect=NSMakeRect(400.0, 70.0,72*8.125,72*10.5);
displayPage = [[NSScrollView alloc] initWithFrame:displayPageRect];

//set up the rulers display
[displayPage setRulersVisible:YES];
[displayPage setHasVerticalRuler:YES];
[displayPage setHasHorizontalRuler:YES];

 //set up border color and width
 [displayPage setBorderType:NSLineBorder];

 //display the displayPage on the screen
 [[mainWin contentView] addSubview:displayPage];

Cela fonctionne bien mais les règles sont en pouces et sont un peu fausses.

enter image description here

Remarquez également que dans l'image, il y a un rectangle violet qui commence en haut de l'écran et qui n'est pas centré sur la vue. Il s'agit d'une sous-vue de NSScroll qui est censée représenter les marges de la page. Il est également décentré.

    //make a new page element for page borders
PageElements* pageBorders = [PageElements new];
NSColor* borderColor = [NSColor purpleColor];
[pageBorders setColor:borderColor];
[pageBorders initWithFrame:NSMakeRect(72*.313, 72*.375, 72*7.499, 72*9.875)];
[[displayPage contentView] addSubview:pageBorders];

Il est évident que je fais quelque chose de mal dans mes conversions/placements. Quelqu'un peut-il me corriger ? De plus, existe-t-il un moyen d'aligner le 0,0 de la règle avec les coordonnées x=0, y=0 de la vue ?

3voto

Tim Dean Points 5161

Essayez d'expérimenter avec les propriétés appropriées de la NSRulerView associée :

NSRulerView *hRuler = [displayPage horizontalRulerView];
[hRuler setMeasurementUnits:@"Points"]; // User whatever registered units you want here
[hRuler setOriginOffset:5.0]; // Experiment with this number to see way works for you

Notez que les unités que vous utilisez lors du réglage des unités de mesure doivent être enregistrées. Il existe quelques valeurs par défaut enregistrées ou vous pouvez utiliser les vôtres. Consultez la documentation de la classe NSRulerView pour plus d'informations sur les différentes façons dont vous pouvez configurer les vues de la règle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X