Pregunta

Estoy intentando crear una subclase personalizada del PDFView clase en XCode.agrego un PDFView instancia a mi ventana en InterfaceBuiler y crear los siguientes archivos para la subclase:

MiPDFView.h:

#import <Quartz/Quartz.h>

@interface MyPDFView : PDFView

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

@end

MiPDFView.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

Sin embargo, a pesar de configurar todo apropiadamente y el posterior NSLog declaraciones que se activan cuando el PDFView Se hace clic en el área para confirmar que el objeto DEBE cambiar de tamaño. Cambiar el tamaño de la ventana no cambia el tamaño de la ventana. PDFView.¿Alguien puede explicarme qué debo hacer para que el PDFView ¿Escala de área con el tamaño de la ventana principal?

El código completo de este proyecto que le permitirá compilarlo y ejecutarlo está aquí:

https://github.com/samuelmanzer/MyPDFViewer

¿Fue útil?

Solución

Entiendo que su requisito es cambiar el tamaño del PDFView a medida que cambia el tamaño de la ventana principal.Hay dos maneras de lograr esto.

  1. Configuración de la máscara de tamaño automático
    • A pesar de que ha establecido programáticamente la máscara de autoresización, esto no es efectivo ya que Autolayout se ha activado para sus vistas (cuando crea proyectos de forma predeterminada en XCode 5, los archivos XIB están configurados de forma predeterminada para Autolayout).Desactive la función Diseño automático desmarcando la casilla "Usar diseño automático" en la pestaña "Identidad y tipo" en el panel Utilidades en Xcode para el archivo MainMenu.xib.
    • Modificar MyPDFView -(vacío)despiertoDesdeNib agregando la línea de código[self setFrame:[self superview].bounds];
  2. Usar Autolayout definiendo restricciones de diseño
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top