سؤال

مرة أخرى لقد بحثت منذ حوالي 45 دقيقة للحصول على إجابة على هذا السؤال وأعتقد أنني قد وجدت الجواب ولكن بعد ذلك، فإن الوضع الذي كنت أقرأه لم يكن تماما مثل الشخص الذي أعمل به.

عندما أضيف رأيي، يبدو أنه لا يغطي نافذة تماما تمكنت من التخلص من شريط الحالة في الأعلى ولكن هناك قسم من المساحة في الجزء السفلي الذي لا يغطيه العرض

نص Alt http://img177.imageshack.us/img177/8844/picture1zjv.png.

كما ترون من لقطة الشاشة، يوجد بار برتقالي ... من البرتقالي لأنني أعرف ما هو في الواقع موجود هناك (إنه عرض ViewController ولكن كل ما أحاول أنه لا يمكنني أن أبدو أنه عرض عرض إضافي لتغطية الشاشة.

هذا هو الرمز الوحيد الذي يعمل

  • (باطلة) ViewDIDLoad {[Super ViewDidLoadload]؛ [self.view addsubview: mainmenu]؛ }

سيكون موضع تقدير أي مساعدة.

هل كانت مفيدة؟

المحلول

هناك بعض الأشياء التي قد تسير الخطأ:

قد يكون الإطار الخاص بك قصيرا جدا. في viewDidLoad: يمكنك إضافة بيان تصحيح للتحقق من ارتفاعه:

NSLog(@"Height is %f", self.view.frame.size.height);

يبدو أنك تريد أن تكون هذه القيمة 480، والارتفاع الكامل للشاشة.

قد يكون أصلك مرتفعا جدا. وبالمثل تحقق من تعويض y الخاص بك:

NSLog(@"y origin is %f", self.view.frame.origin.y);

يبدو أنك تريد أن تكون القيمة 0.

قد يكون أصلك Superview مرتفعا للغاية. على افتراض أنك هذا العرض لديه فقط Superview واحد، سيساعد هذا الرمز في التحقق من الإحداثيات المطلقة لأصل العرض الخاص بك:

CGPoint absoluteOrigin = [self.view convertPoint:self.view.frame.origin
                                          toView:self.view.superview];
NSLog(@"y origin in superview is %f", absoluteOrigin.y);

يمكنك فقط علامة على عدد قليل جدا .superviewلمعرفة الإحداثيات من حيث الآراء السابقة.

بالمناسبة، بدلا من استخدام 480 فقط كرقم سحري في التعليمات البرمجية الخاصة بك، قد ترغب في القيام بشيء مثل هذا للحصول على الارتفاع الكامل:

CGRect appFrame = [[UIScreen mainScreen] applicationFrame];
CGFloat screenHeight = appFrame.size.height;

ال applicationFrame تأخذ العقار في الاعتبار ما إذا كان يتم عرض شريط الحالة أم لا.

نصائح أخرى

يجب عليك نشر التعليمات البرمجية الخاصة بك، ولكن بشكل عام، يمكنك جعل Uiview تعبئة الشاشة كما يلي:

UIView *foo = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,480)];

ويمكنك ضبط الإطار في وقت لاحق:

foo.frame = CGRectMake(0,0,320,480);

لملء الشاشة، يجب عليك استخدام مستطيل 320 × 480، في الأصل (0،0). هذا ما تنشئ وظيفة cgrectmake أعلاه.

لقد قمت بإصلاح هذه المشكلة من قبل، لقد قمت بإصلاحها فقط من خلال تحريك عرض أسفل 20 بكسل ... عند استخدام "منشئ الواجهة"، فإنه يحتوي على "محاكاة شريط الحالة" القليل من "أو" محاكاة شريط الأدوات "ولكنني أعتقد أن نوعه من Finnicky وبعد

يجب على كل من Andrew و Tylers الإجابات أن تعمل رغم ذلك، لا عار في فعل الأشياء برمجيا :). إذا كنت تقوم بإنشاء الأشياء في منشئ الواجهة، فما عليك سوى السطر الثاني لأندرو، لا تحتاج إلى إعادة تهيئة.

حسنا، حسنا، لقد احتجت بها والآن أشعر بأنني من الغباء ... عدت إلى IB وأدركت أن ارتفاع كل عرض تم تعيينه في 460 وليس 480 ... لقد تعطيني الرجال مجموعة من المعلومات الجيدة وأنا أقدر كل شيء. أتمنى أن أتمكن من وضع علامة عليها جميعا كجابات.

شكرا لك مرة أخرى، bwc

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top