Cacao PDFView ne pas redimensionner
-
21-12-2019 - |
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:
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
- 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];
- À l'aide de mise en page automatique en définissant des contraintes de mise en forme
- Cela peut être fait dans Interface Builder biais du code ou par programmation. S'il vous plaît lisez la Pomme de Cacao Auto Guide de Présentation de l'