الكاكاو بدففيو لا تغيير حجم
-
21-12-2019 - |
سؤال
أحاول إنشاء فئة فرعية مخصصة من PDFView
فئة في كسكودي.أود أن أضيف PDFView
المثال إلى نافذتي في إنتيرفاسيبويلر وإنشاء الملفات التالية للفئة الفرعية:
ميبدففيو.h:
#import <Quartz/Quartz.h>
@interface MyPDFView : PDFView
-(void)awakeFromNib;
-(void)mouseDown:(NSEvent *)theEvent;
@end
ميبدففيو.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
مقياس المساحة مع حجم النافذة الأم?
رمز كامل لهذا المشروع من شأنها أن تسمح لك لبناء وتشغيله هو هنا:
المحلول
أنا أفهم أن الشرط الخاص بك هو تغيير حجم PDFView
كما يمكنك تغيير حجم الإطار الأصل.هناك طريقتان لتحقيق ذلك
- ضبط قناع الحجم التلقائي
- على الرغم من أنك قمت بتعيين قناع أوتوريزينغ بشكل منهجي ، وهذا ليس فعالا كما تم تشغيل أوتولايوت على وجهات النظر الخاصة بك (عند إنشاء مشاريع افتراضيا على كسكودي 5 ، يتم تعيين ملفات زيب افتراضيا ل أوتولايوت ).قم بإيقاف تشغيل ميزة التخطيط التلقائي عن طريق إلغاء تحديد مربع الاختيار "استخدام التخطيط التلقائي" في علامة التبويب "الهوية والنوع" في جزء الأدوات المساعدة في كسكودي للقائمة الرئيسية.ملف زيب.
- تعديل ميبدففيو - (باطل)أيقظمنيب عن طريق إضافة سطر التعليمات البرمجية
[self setFrame:[self superview].bounds];
- استخدام التخطيط التلقائي عن طريق تحديد قيود التخطيط
- يمكن القيام بذلك في منشئ الواجهة أو من خلال الكود بشكل منهجي. يرجى قراءة دليل تخطيط السيارات أبل الكاكاو
لا تنتمي إلى StackOverflow