Sunday, September 23, 2012

iOS 6.0 Orientation

In iOS6,UINavigation Controller does not consult their children to determine whether they should autorotate.In another word iOS6 handle orientation by top-most controller.

The shouldAutorotateToInterfaceOrientation: method of UIViewController is deprecated. In its place, you should use the supportedInterfaceOrientations and shouldAutorotate methods.

iOS6 has three new method to handle orientation
// what we support
- (NSUInteger)supportedInterfaceOrientations 
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

// should autorotate or not
- (BOOL) shouldAutorotate 
{
    return YES;
}

//initial orientation we want to have
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{
    return UIInterfaceOrientationPortrait;
}
But where should we write those methods?


If you try to make the MasterViewController only has Portrait Orientation and the DetailViewController has Portrait Orientation and Landscape Orientation.

I find some tutorial,but It has a bug.
The bug is when your DetailViewController on Landscape Orientation press back button to MasterViewController will show Landscape Orientation.


Here's my solution.
You need to create a class that has a subclass of UINavigationController and set supportedInterfaceOrientations and shouldAutorotate in that class.

First,set this in your subclass of UINavigationController
- (NSUInteger)supportedInterfaceOrientations 
{ 
    return [[self topViewController] supportedInterfaceOrientations]; 
} 

- (BOOL)shouldAutorotate
{
    return YES;
}
set this on MasterViewController
- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 
set this on DetailViewController
- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}


Another way - It doesn't need to subclass of UINavigationController
Add a Category to UINavigationController
@implementation UINavigationController (Rotation_IOS6)

-(BOOL)shouldAutorotate
{
    return [[self.viewControllers lastObject] shouldAutorotate];
}

-(NSUInteger)supportedInterfaceOrientations
{
    return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}

@end

Another way - Compatible with the iOS4,5 code
Swap Method Implementations


15 comments:

  1. I tried all methods and none of them worked - my adview rotates to whatever direction it wants and it messes my application view when I come back... iOS 6 is useless piece of crap.

    ReplyDelete
    Replies
    1. Those methods work for me,but I also found some orientation bug in iOS 6. I will upload sample file later.

      Delete
    2. This sample file uses "Add a Category to UINavigationController" way.
      https://www.box.com/s/00f1xh44379vvib8nyh2

      Delete
  2. i need this method for tabbar controller app.sample code

    ReplyDelete
  3. This information will help you identify potential problems with drinking water. The most effective way to keep your water clean and accessible is to invest in a mobile water bottle, and use these steps to ensure that the water you drink is clean.
    شركة تنظيف بالرياض
    شركة تنظيف فلل بالرياض
    شركة تنظيف خزانات بالرياض
    شركة مكافحة حشرات بالرياض
    شركة رش مبيدات بالرياض
    شركة مكافحة الصراصير بالرياض
    شركة مكافحة الفئران بالرياض

    ReplyDelete
  4. تعد شركة الكمال هى افضل شركة تنظيف بالدمام وهى من افضل الشركات التى تقدم لك خدمة تنظيف منازل باحترافية فائقة وبصورة مميزة تجعلك سعيد جدا بالتعامل معنا.
    نوفر كافة عوامل النجاح التى تجعلنا افضل شركة تنظيف منازل بابها وهى كالتالى:
    1-عمالة مميزة لتنظيف الأرضيات والحوائط
    2-ادوات تنظيف وجلى للرخام والسيراميك وكافة انواع الأرضيات
    3-كافة انواع المنظفات والشمبوهات ومكسبات الروائح
    ولذلك نعتبر نحن شركة الكمال افضل شركة تنظيف فلل بالدمام لأننا ننفرد بتقديم ارقى واجود الخدمات والتى تجعلنا فى محور اهتمام كافة عملائنا بمنطقة الدمام – الاحساء – الجبيل – الخبر - القطيف
    تختص شركة الكمال بكافة انواع الخدمات المنزلية المقدمة لعملائنا الكرام واليكم نبذة مختصرة عن كافة الخدمات وطرق تقديمها :
    يسر شركة الكمال ان تقدم لكم شركة تنظيف شقق بالدمام خدمة تنظيف للمنزل والمكتب والشركات والمعاض تنظيف الأرضيات والحوائط والفرش تقديم افضل المستويات فى مجال التنظيف والتى تناسب طموحاتكم عملائنا الكرام ،ونقدم خدمة تنظيف الشقق بالدمام عن طريق الأستعانة بفريق عمل مدرب وجاهز للذهاب اليكم وتقديم مستويات عالية جدااا من النظافة تلبى كافة الأذواق.
    تتميز شركتنا شركة تنظيف مجالس بالدمام بتقنية كبير جدا فى عمليات التنظيف وخاصة تنظيف المجالس لاننا متميزون بخبرتنا العاليه التى تختلف عن غيرنا وذلك بفضل الله علينا مع شركة الكمال لتنظيف المجالس لايوجد بيت يعانى من أوساخ المجالس لاننا نغير بيتك عزيزى العميل الى جوهره متألقه فى أبصار الناظرين وذلك كى يليق بك وبأسرتك كما في شركة تنظيف سجاد وموكيت بالدمام . تتمتع شركتنا بالعماله الماهره والتى لايوجد مثلها فى اى شركة اخرى وذلك لاننا متميزون حقاً فى اى عمل نقوم به.
    فقط اتصل بنا وسترى بعينك كل ماهو يبهرك سيدى العميل فشعارنا أرضاء العميل فى المقام الاول ثم تقديم مايطلب على اكمل وجه وبسرعه وجوده عاليه فى شركة تنظيف خزانات بالدمام توجد الات ذات جوده عاليه وتمتاز بالتقنية الحديثه والمتطوره.
    شركتنا لاتقبل المنافسه نحن نقدم افضل العروض والمميازات والخدمات فى شركة الكمال شركة عزل خزانات بالدمام
    تتشرف ان تقدم لكم خدماتها المميزه التى تقدمها لعملائها وتامل ان تنول اجابكم ان عمليه عزل الخزانات من الموضوعات الحيويه التى يجب علينا القيام بها وممالاشك فيه ان هذا الموضوع هام ونافع وضرورى لان المياه الغير صحيه هى التى تسبب تلوث المياه سواء بالمياه الغير صحيه او بالمواد التى تم تصنيع الخزانات

    ReplyDelete
  5. فى شركة المحترف أصبحت مشكلة وجود الحشرات مشكله واضحه وخطيره في مجتمعنا وغالبا ما تتزايد وهذه المشكله مشكلة إنتشار الحشرات غالبا ماتكثر في فصل الصيف والبعض يتسائل لماذا تتزايد أغلب الحشرات وتكثر في فصل الصيف فمن الأسباب التي تتسبب في كثرة الحشرات ووجودها في فصل الصيف لأن شدة الحراره تسبب في إنتشار الحشرات بكثافة بعكس فصل الشتاء لأن في الشتاء غالبا ما يكون الجو شديد البروده ولذلك لا تظهر الحشرات بشكل كبير وهذا أيضا ما إعتدنا عليه وهو إنتشار الحشرات وكثرتها في فصل الصيف ولذلك نحن شركة مكافحة حشرات بالخبر الحشرات عملنا علي توفير الحل للقضاء علي تلك المشكله مشكلة وجود الحشرات وإنتشارها حيث بدأنا بالبحث عن المبيدات الجيده التي تقوم بإبادة الحشرات بشكل كامل وأيضا تعمل تلك المبيدات علي عدم عودة الحشرات مره أخري للمكان الذي تم فيه عملية رش المبيدات في شركة رش مبيدات بالجبيل عدم عودتها مره أخري والقضاء عليها كامل وأيضا إستخدمنا الأجهزه والماكينات الحديثه في عملية مكافحة الحشرات حيث قمنا بالبحث عن الأجهزه الجيده والمميزه في عملية رش المبيدات ومتلكنا تلك الأجهزه وأصبحت لدينا في شركة مكافحة حشرات بالاحساء وقمنا بإستخدام الفنين والعماله الماهره المدربه علي عملية مكافحة الحشرات حيث أن إستخدام الفنين والعمال الماهره ذلك من ضمن ركائز الشركه ولاتصبح الشركه الشركه الأفضل في مجال مكافحة الحشرات بالمبيدات وأنواعها والأجهزه المستخدمه في عملية مكافحة الحشرات ولكن عدم وجود الفنين والعماله المدربه فتصبح الشركه من الشركات الفاشله في مجال مكافحة الحشرات حيث هناك فرق كبير بين الشركه التي تستخدم الفنين المدربه وذات الخبرات القديمه في شركة مكافحة حشرات بالجبيل وهناك فرق بين الشركه التي تستخدم الفنين الذين لايوجد لديهم الخبره الكافيه في عملية مكافحة الحشرات فهناك فرق كبير وأيضا هناك فرق بين الشركه التي تستخدم العمال المهره والمدربين وبين العمال حديثي العمل وليسو مدربين في مجال عملهم فأيضا يصبح هناك فرق شاسع بين هذه الشركات ونحن في شركة مكافحة الحشرات أصبحنا من الشركات العالميه المشهوره عالميا في شركة مكافحة الحشرات وأيضا عملنا علي مكافحة جميع أنواع الحشرات ومنها البق أو العته عملنا في شركة مكافحة العته أو البق عملنا علي القضاء علي تلك الحشره بشكل نهائي وضمان عدم عودتها مره أخري في المكان الذي قمنا نحن شركة مكافحة حشرات بالقطيف دائما صديقى البيئة. قمنا بمكافحة ورش المبيدات فيه للقضاء علي حشرة البق أوالعته وهناك من أنواع الحشرات الصراصير بأنواعها حيث قمنا

    ReplyDelete