Вопрос

Я пытаюсь создать пользовательский подкласс PDFView класс в XCode.Я добавляю PDFView создайте экземпляр в моем окне в InterfaceBuiler и создайте следующие файлы для подкласса:

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

Однако, несмотря на правильную настройку всего и последующее NSLog операторы, которые запускают, когда PDFView щелчок по области подтверждает, что объект ДОЛЖЕН быть изменен, изменение размера окна не приводит к изменению размера PDFView.Кто-нибудь может объяснить, что мне нужно сделать, чтобы PDFView масштаб области в соответствии с размером родительского окна?

Полный код для этого проекта, который позволит вам создать и запустить его, находится здесь:

https://github.com/samuelmanzer/MyPDFViewer

Это было полезно?

Решение

Я понимаю, что ваше требование заключается в изменении размера PDFView по мере изменения размера родительского окна.Есть два способа достичь этого

  1. Настройка маски автоматического изменения размера
    • Несмотря на то, что вы программно установили маску автоматического изменения размера, это неэффективно, поскольку для ваших представлений включено автоматическое отображение (когда вы создаете проекты по умолчанию в Xcode 5, файлы xib по умолчанию настроены для автоматического отображения ).Отключите функцию автозапуска, сняв флажок “Использовать автозапуск” на вкладке "Идентификация и тип" на панели утилит в Xcode для файла MainMenu.xib.
    • Измените MyPDFView в -(пустота)Пробуждение от Ni b путем добавления строки кода[self setFrame:[self superview].bounds];
  2. Использование автозапуска путем определения ограничений макета
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top