Question

Je cherche à créer une sous-classe personnalisée de l' PDFView classe dans XCode.- Je ajouter un PDFView exemple de ma fenêtre de InterfaceBuiler et créer les fichiers suivants pour la sous-classe:

MyPDFView.h:

#import <Quartz/Quartz.h>

@interface MyPDFView : PDFView

-(void)awakeFromNib;
-(void)mouseDown:(NSEvent *)theEvent;

@end

MyPDFView.m:

#import "MyPDFView.h"

@implementation MyPDFView

-(void)awakeFromNib
{
    [self setAutoresizingMask: NSViewHeightSizable|NSViewWidthSizable|NSViewMinXMargin|NSViewMaxXMargin|NSViewMinYMargin|NSViewMaxYMargin];
    [self setAutoScales:YES];
}

- (void)mouseDown:(NSEvent *)theEvent
{
    unsigned long mask = [self autoresizingMask];
    NSLog(@"self autoresizingMask: %lu",mask);
    NSLog(@"NSViewHeightSizable: %lu",mask & NSViewHeightSizable);
    NSLog(@"NSViewWidthSizable: %lu",mask & NSViewWidthSizable);
    NSLog(@"self setAutoScales: %@",[self autoScales] ? @"YES" : @"NO");
    NSView* sv = [self superview];
    NSLog(@"superview autoresizesSubviews: %@",[sv autoresizesSubviews] ? @"YES" : @"NO");
    NSSize frame_dims = [self frame].size;
    NSLog(@"Frame: (%f,%f)",frame_dims.width,frame_dims.height);
    NSSize bounds_dims = [self bounds].size;
    NSLog(@"Bounds: (%f,%f)",bounds_dims.width,bounds_dims.height);
    NSSize sv_frame_dims = [sv frame].size;
    NSLog(@"Superview Frame: (%f,%f)",sv_frame_dims.width,sv_frame_dims.height);
    NSSize sv_bounds_dims = [sv bounds].size;
    NSLog(@"Superview Bounds: (%f,%f)",sv_bounds_dims.width,sv_bounds_dims.height);
    [super mouseDown:theEvent];
}
@end

Toutefois, en dépit de tout ce paramètre de manière appropriée et de la suite NSLog des déclarations qui se déclenchent quand le PDFView la zone est cliqué confirmant que l'objet DOIT être le redimensionnement, le redimensionnement de la fenêtre n'est pas redimensionner l' PDFView.Quelqu'un peut-il expliquer ce que je dois faire pour faire de la PDFView la zone de l'échelle avec la taille de la fenêtre parent?

Le code complet pour ce projet qui va vous permettre de créer et d'exécuter c'est ici:

https://github.com/samuelmanzer/MyPDFViewer

Était-ce utile?

La solution

Je comprends que votre exigence est de redimensionner la PDFView lorsque vous redimensionnez la fenêtre parent.Il y a deux façons d'y parvenir

  1. Réglage Du Masque D'Un Redimensionnement Automatique
    • Même si vous avez par programmation à l'ensemble d'un redimensionnement automatique de masque, ce n'est pas efficace, comme la mise en page automatique a été activée pour votre point de vue (Lorsque vous créez des projets par défaut sur Xcode 5, le xib fichiers sont configurés par défaut pour la mise en page automatique ).Désactiver la fonctionnalité mise en page automatique en décochant la case “Utiliser la mise en forme automatique” dans la boite "l'Identité et le Type" dans l'onglet Utilitaires de volet dans Xcode pour le MainMenu.xib fichier.
    • Modifier la MyPDFView de l' -(void)awakeFromNib en ajoutant la ligne de code[self setFrame:[self superview].bounds];
  2. À l'aide de mise en page automatique en définissant des contraintes de mise en forme
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top