سؤال

أنا استخدم هذه.

لقد وضعت هذا في المكان الذي تتم فيه إضافة الصور:

self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

لقد وضعت هذه التجاوزات في SlideshowViewController:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    return YES;
}

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation duration:(NSTimeInterval)duration {


}

الأول يسمى ، ولكن ليس الثاني.

أنا لا أستخدم بنك الاستثمار القومي. يستخدم init مخصصة تُرجع self.view مع 3 صور عليها.

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

تحرير: فقط حاول إضافة Willanimate ... إلى وحدة التحكم في عرض الجذر لـ NavigationController ، لكن لم يتم الاحتجاج بها. ربما يكون NavigationController هو المشكلة؟ في هذه الحالة ، أين أضع الوصية ...؟ بدلاً من ذلك ، كيف يمكنني تلقي الرسائل المرسلة إليها ونقلها نحو ViewController المرئي؟

تحرير 2: سبب الخطأ في الموضوع هو أن TabbarController كان يفتقد اتصالًا في IB (الذي كنت متأكدًا من أنه كان هناك). لذا فإن مشكلتي الآن هي نفسها بالنسبة لبعض الأسئلة الأخرى المماثلة - Willanimate ... يتم استدعاؤها في Root VC ولكن ليس في VCs المدفوعة. الرمز الذي استخدمته في معرض VC بدلاً من تحريكه ، أي. لم يتم دفعها ولكن تمت إضافتها حاليًا كإجابة فرعية إلى النافذة - لملء الشاشة بأكملها.

إن اقتراحات حول كيفية إرسال رسالة إلى وحدة تحكم Subview لتعيين الإطارات ، أو ستكون محلول بديلة!

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

المحلول

هذه ليست إجابة عن سبب "Willanimaterotation .."-لا تؤدي الطريقة إلى تشغيل ولكن بدلاً من ذلك بديل لكيفية تكيف معرض الصور مع التناوب نفسه.

في initWithImages أضف:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(didRotate:)
                                             name:UIDeviceOrientationDidChangeNotification object:nil];

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

- (void) didRotate:(NSNotification *)notification
{   
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

    if (orientation == UIDeviceOrientationLandscapeLeft)
    {
        NSLog(@"Landscape Left!");
    }
}

لا تنسَ إلغاء تسجيل الإخطار في Dealloc:

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];

هل يمكنني أيضًا أن أقترح أيضًا استخدام UisCrollView بدلاً من التعامل مع التمرير والإيماءات بنفسك؟

نصائح أخرى

هل تم دفع SlideshowViewController مباشرة إلى مكدس وحدة تحكم التنقل ، أم أنه جزء من عرض آخر؟ تحصل أساليب OIVIEW على تفويض على نوع من العبث عند العمل مع عمليات العرض الفرعية على طرق العرض على مكدس وحدة تحكم التنقل.

إذا كانت SlideshowViewController هي مجرد نظرة فرعية على عرض آخر تم دفعه إلى مكدس وحدة تحكم التنقل ، فسأحاول الاستماع إلى هذه الطريقة في وحدة التحكم في العرض الموجود بالفعل على مكدس وحدة تحكم التنقل ، ثم استدعاء الطريقة المناسبة في SlideshowViewController من هناك .

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

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation duration:(NSTimeInterval)duration {
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    [self.navigatioController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}

كان هذا السؤال صعبًا بعض الشيء للإجابة على ما أعتقد ، لأنه كان يتعلق بإعداد تطبيقي المحدد. آسف للترك الوقت في نفاده ، فقد فات الأوان في نفس اليوم الذي سألت فيه ؛)

اعتقدت أنني سأقوم بنشر هذا "لم دفن في التعليقات" لأي شخص يحصل على نفس الأعراض.

الأول هو أنني لاحظت iboutlet أنني متأكد من أنني متصل عند نقطة واحدة لم أعد متصلاً (كائن Tab Bar -> كائن TabBarController). نظرًا لأنني كنت أرفع أدمغتي ونقلت الأشياء حول هذا العمل ، فمن المحتمل أن يكون هذا بسبب تجربة شيء ما ثم استعادة نسخة احتياطية.

كان الجزء الثاني من الحل هو إضافة طريقة عرض المعرض إلى عرض TabbarController بدلاً من العرض المنعش. ثم تم استدعاء طرق وحدة التحكم في عرض الجذر ... وتم استدعاء أساليب Willauto.

(لإخفاء شريط علامات التبويب وشريط التنقل أثناء الدوران ، اضطررت إلى ضبط .alpha على 0 أثناء عرض المعرض ، وإلا كان يتم إخفاء العرض الذي تم التنقل فيه جزئيًا تحت شريط التنقل عند العودة إليه. لم أجد أي طريقة للاختباء شريط الحالة أثناء عرض المعرض.)

بعد ذلك ، كان هناك طلب للحصول على المعرض في عرض تفصيلي تم التنقل إليه من علامة تبويب أخرى ، وحصلت على خطأ صعب أنه فقط أثناء عرض التفاصيل الأخرى (العمل) تحت علامة التبويب الأخرى ، فإن العمل التلقائي مع الجديد صالة عرض. سيعود إلى الحل لهذا ، الوقت الكويتين.

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