#objective-c #xcode #cocoa
#objective-c #xcode #какао
Вопрос:
У меня есть приложение, полученное из шаблона приложения Cocoa Xcode, которое правильно печатает на El Capitan, но вводит сантиметровое поле по всему кругу с теневым полем на Sierra. Изменение значений полей (в общем экземпляре в viewDidLoad ViewController) на большие положительные значения увеличивает поля, но уменьшение их до нуля по-прежнему оставляет поле полей и теней. Изображение представляет собой снимок экрана предварительного просмотра. Я хотел бы вернуться к тому, чтобы PDF занимал всю печатную страницу. Просмотр меню для файла / печати показывает, что он выполняет печать первого ответчика :. Должен ли я попытаться переопределить эту функцию? Но если приведенный ниже код выполняется безрезультатно, что хорошего это даст?
NSPrintInfo *PageDefaults = [NSPrintInfo sharedPrintInfo];
[PageDefaults setBottomMargin:0];
[PageDefaults setLeftMargin:0];
[PageDefaults setRightMargin:0];
[PageDefaults setTopMargin:1];
Если я увеличу верхнее и левое поля в приведенном выше коде до 120, печать изменится на:
Раскадровка показывает, что я использую только элемент управления просмотром PDF, который заполняет всю сцену ViewController
И, наконец, ViewController на экране показывает, что он выглядит так, как должен:
Комментарии:
1. Как вы печатаете что? Возможно, изменился класс представления. Мое простое тестовое приложение не печатает границу.
2. Не совсем справедливое сравнение, чтобы сказать, что оно работает с простым тестовым приложением, поскольку вы, вероятно, создали его вчера в Xcode 8, тогда как мое приложение было изначально создано пару лет назад в Xcode 5 или 6! Надеюсь, мое редактирование выше прояснит проблему.
3. Проект был создан в OS X 10.10 и Xcode 6.4. Я попробую PDFView. Это не единственная проблема с PDFView в 10.12.
Ответ №1:
-[PDFView print:]
в 10.10 вызывает printWithInfo:autoRotate:pageScaling:
. В 10.12 -[PDFView print:]
вызывает printOperationWithView:
и печатает фон. Решение: создайте подкласс PDFView
, переопределите print:
и вызовите printWithInfo:autoRotate:pageScaling:
.
- (void)print:(id)sender {
[self printWithInfo:[NSPrintInfo sharedPrintInfo] autoRotate:YES pageScaling:kPDFPrintPageScaleToFit];
}
Комментарии:
1. Абсолютно идеально! Спасибо.