IOS 6 рдореЗрдВ рдСрдЯреЛрд░реЛрдЯреЗрд╢рди рдХреЛ рд╕рдордЭрдирд╛

рдирдорд╕реНрдХрд╛рд░ рджреЛрд╕реНрддреЛрдВ!

рдпрджрд┐ рдЖрдк рдРрдкреНрдкрд▓ рд╕реЗ рдЧреИрдЬреЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЕрд╡рдЧрдд рд╣реИрдВ рдХрд┐ рдЖрдИрдУрдПрд╕ рдХреЛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг 6 рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдиреНрдп рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде, Apple рдиреЗ рдСрдЯреЛрд░реЛрдЯреЗрд╢рди рддрдВрддреНрд░ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рд╣реИред
рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдСрдЯреЛрд░реЛрдЯреЗрд╢рди рдПрдХ рддрдВрддреНрд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЪрд┐рддреНрд░ (рд▓рдореНрдмреА) рдФрд░ рд▓реИрдВрдбрд╕реНрдХреЗрдк (рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд) рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рджреЛрдиреЛрдВ рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЬрдм рдЖрдк рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдШреБрдорд╛рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред
рдЫрд╡рд┐
рдпрджрд┐ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рджреЛрдиреЛрдВ рдЭреБрдХрд╛рд╡реЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИ (рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрджрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рд╕реНрдХреНрд░реАрди рдкрд░ рд░реЛрдЯреЗрд╢рди рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ) - рдореИрдВ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдкреНрд░рд╢реНрди рд╣реИрдВ ред
рдпрджрд┐ рдЖрдк рд╕реНрдХреНрд░реАрди рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдкрд░рд┐рд╡рд░реНрддрди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдВрддрд░ рдХреЛ рдиреЛрдЯрд┐рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЬрд╛рдирдирд╛ рдХрд┐ iOS6 рдореЗрдВ рдСрдЯреЛрд░реЛрдЯреЗрд╢рди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдФрд░ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ iOS 6 рд╕реЗ рдкрд╣рд▓реЗ рдерд╛


IOS рдбрд┐рд╡рд╛рдЗрд╕ рд╕рдВрдЧрдд рд╕рд┐рд╕реНрдЯрдо рд╕реНрдерд┐рд░рд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд 4 рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдХреНрд░реАрди рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ:

рдЖрдИрдУрдПрд╕ 5 рдФрд░ рдЙрд╕рд╕реЗ рдкрд╣рд▓реЗ рдореЗрдВ, рдСрдЯреЛрд░реЛрдЯреЗрд╢рди рддрдВрддреНрд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ

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

рдЬрдм рдХреЛрдИ рдЙрдкрдХрд░рдг рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдЕрдкрдиреЗ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ, рд╕рд┐рд╕реНрдЯрдо рд╕рдХреНрд░рд┐рдп рдирд┐рдпрдВрддреНрд░рдХ (рд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓рд░) рд╕реЗ рдкреВрдЫрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд╣ рдЗрд╕ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдСрд░рд┐рдЬрдиреЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ 4 рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдВрдбреЛ (рдпрд╛ рдЕрдиреНрдпрдерд╛ рдирд╣реАрдВ) рдХреЛ рдШреБрдорд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рдзрд┐ рдХреЛ рдпрд╕ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд▓рд┐рдП, рдпрд╣ shouldAutorotateToInterfaceOrientation рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ : рд╡рд┐рдзрд┐ рдФрд░ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред

Info.plist рдореЗрдВ UISupportedInterfaceOrientations рдХреБрдВрдЬреА рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╢рд╛рдорд┐рд▓ рд╣реИ (рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рд╛рд░рд╛рдВрд╢ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рднреА рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ) рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдХреЗрд╡рд▓ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред



рдпрджрд┐ рдХреЛрдИ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреБрдЫ рднреА рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдкреЛрд░реНрдЯреНрд░реЗрдЯ рдореЛрдб (UIInterfaceOrientationPortrait) рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдм iOS 6 рдореЗрдВ


IOS 6 рдореЗрдВ, shouldAutorotateToInterfaceOrientation рд╡рд┐рдзрд┐ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рджреЛ рдЕрдиреНрдп рдСрдЯреЛрд░реЛрдЯреЗрд╢рди рдХреЗ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ - рд╕рдорд░реНрдерд┐рдд InterfaceOrientations рдФрд░ shouldAutorotate ред

рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп (рдпрд╛ рдЬрдм рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдорд╛рдореВрд▓реА рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рд╕рд┐рд╕реНрдЯрдо рд╢реАрд░реНрд╖-рд╕рдмрд╕реЗ рдкреВрд░реНрдг-рд╕реНрдХреНрд░реАрди рджреГрд╢реНрдп рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдЪреБрдирд╛рд╡ рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПрдЖрдпреБрдЯрд░реЛрдЯреЗрдЯ , рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж (рдХреЗрд╡рд▓ рдпрджрд┐ рдореВрд▓реНрдп YES рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ), рд╕рдорд░реНрдерд┐рдд рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ InInfacefaceOrientations рдПрдХ рдмрд┐рдЯ рдореБрдЦреМрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдорд╛рдиреНрдп рдЪрд┐рддреНрд░ рдФрд░ рдкрд░рд┐рджреГрд╢реНрдп рдкрд░рд┐рджреГрд╢реНрдп рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 - (NSInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight; } 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд┐рд╕реНрдЯрдо supportInterfaceOrientations рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд╕рдВрдпреЛрдЬрди рдСрдкрд░реЗрд╢рди (рдмрд┐рдЯрд╡рд╛рдЗрдВрдб рдФрд░) рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдЭреБрдХрд╛рд╡ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реИ (Info.plist рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ AppDelets рдЖрд╡реЗрджрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк : supportInterfaceOrientationsForWindow : рд╡рд┐рдзрд┐)ред рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ рдореЛрдбрд╝ рд╣реИ (рдпрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)ред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдирд┐рд░реНрдгрдп рдСрдкрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
 app_mask & topmost_controller_mask 

рдЬрд╣рд╛рдБ app_mask Info.plist (рдпрд╛ рддреЛ рдЖрд╡реЗрджрди: supportInterfaceOrientationsForWindow :) , рдФрд░ рд╢реАрд░реНрд╖ full-screen рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ supportInterfaceOrientations рдХреЙрд▓рд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк topmost_controller_mask рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рддреЛрдВ рдХреЛ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:



рдпреЗ рдмрджрд▓рд╛рд╡ рд╣реИрдВред рдпрд╣ рдХрджрдо Apple рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдХреНрд░рд┐рдп рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рдХрдВрдЯреЗрдирд░ рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерд┐рдд рд╕реНрдХреНрд░реАрди рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИред

рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ Apple рдХреЗ рдкреНрд░рдореБрдЦ рд╡рд┐рдЪрд╛рд░ (рдбрдмреНрд▓реНрдпреВрдбрдмреНрд▓реНрдпреВрдбреАрд╕реА 2012 рд╕реЗ рд╕рддреНрд░ 236) рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:


рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд▓реЗрдирд╛-рджреЗрдирд╛


рдЖрдИрдУрдПрд╕ 5 рдФрд░ рдЙрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдПрдкреНрдкрд▓ рдЖрдИрдУрдПрд╕ 6 рдХреЗ рддрдВрддреНрд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ:

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреНрдпрд╛ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдкрдХреЛ рдЖрдИрдУрдПрд╕ 6 рдореЗрдВ рдПрдХ рдореМрдЬреВрджрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП (рдЕрдзрд┐рдорд╛рдирддрдГ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд╛рде) рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЕрдВрдд рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдШреБрдорд╛рд╡реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрдгрдп рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ? рдирдИ рд╕рдорд░реНрдерд┐рдд InterfaceOrientations / shouldAutorotate рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ shouldAutorotateToInterfaceOrientation рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЗрди рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд░реВрдЯ рдФрд░ рд╢реАрд░реНрд╖-рдкреВрд░реНрдг-рд╕реНрдХреНрд░реАрди рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рдмрдЪреЗрдЧреА ред рдХрдВрдЯреЗрдирд░ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рд░рд╛рдп рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

1. рд╢реНрд░реЗрдгреАред
рд╢реНрд░реЗрдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдирдП рддрд░реАрдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╡реЗ рд░реЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рд╢реАрд░реНрд╖ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рд╕реЗ рдкреВрдЫрддрд╛рдЫ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, UINavigationController рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

 @implementation UINavigationController (RotationIOS6) -(BOOL)shouldAutorotate { return [self.topViewController shouldAutorotate]; } -(NSUInteger)supportedInterfaceOrientations { return [self.topViewController supportedInterfaceOrientations]; } - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return [self.topViewController preferredInterfaceOrientationForPresentation]; } @end 


2. рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдоред
рдкреИрд░рд╛рдЧреНрд░рд╛рдл 1 рдХреЗ рд╕рдорд╛рди рд╣реА рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди UINavigationController рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ - рдЬрдм рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╕рднреА UINavigationControllers рдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

 // CustomNavigationController.h @interface CustomNavigationController : UINavigationController @end 


 // CustomNavigationController.m #import "CustomNavigationController.h" @implementation CustomNavigationController -(BOOL)shouldAutorotate { return [self.topViewController shouldAutorotate]; } -(NSUInteger)supportedInterfaceOrientations { return [self.topViewController supportedInterfaceOrientations]; } - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return [self.topViewController preferredInterfaceOrientationForPresentation]; } @end 


3. рд╡рд┐рдзрд┐ рд╕реНрд╡рд┐рдЬрд╝рд▓рд┐рдВрдЧред
рд░рдирдЯрд╛рдЗрдо рдкреНрд░реЗрдорд┐рдпреЛрдВ рдФрд░ рдХрдЯреНрдЯрд░ рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рдХреЗ рд▓рд┐рдП - рд╕реНрд╡рд┐рдЬрд╝рд▓рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП , рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдкрд░рд┐рдЪрд┐рдд рддрд░реАрдХреЗ рдХреА рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рддрд░реАрдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП aAutorotateToInterfaceOrientation:ред

( рдпрд╣рд╛рдВ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб)

 @implementation AppDelegate void SwapMethodImplementations(Class cls, SEL left_sel, SEL right_sel) { Method leftMethod = class_getInstanceMethod(cls, left_sel); Method rightMethod = class_getInstanceMethod(cls, right_sel); method_exchangeImplementations(leftMethod, rightMethod); } + (void)initialize { if (self == [AppDelegate class]) { #ifdef __IPHONE_6_0 SwapMethodImplementations([UIViewController class], @selector(supportedInterfaceOrientations), @selector(sp_supportedInterfaceOrientations)); SwapMethodImplementations([UIViewController class], @selector(shouldAutorotate), @selector(sp_shouldAutorotate)); #endif } } @end @implementation UIViewController (iOS6Autorotation) #ifdef __IPHONE_6_0 /* * We've swizzled the new iOS 6 autorotation callbacks onto their iOS 5 and iOS 4 equivalents * to preserve existing functionality. * */ - (BOOL)sp_shouldAutorotate { BOOL shouldAutorotate = YES; if ([self respondsToSelector:@selector(shouldAutorotateToInterfaceOrientation:)]) { NSUInteger mask = 0; if ([self shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationPortrait]) { mask |= UIInterfaceOrientationMaskPortrait; } if ([self shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeLeft]) { mask |= UIInterfaceOrientationMaskLandscapeLeft; } if ([self shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight]) { mask |= UIInterfaceOrientationMaskLandscapeRight; } if ([self shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationPortraitUpsideDown]) { mask |= UIInterfaceOrientationMaskPortraitUpsideDown; } if (mask == 0) { // Shouldn't autorotate to *any* orientation. shouldAutorotate = NO; } } else { // This actually calls the original method implementation // instead of recursively calling into this method implementation. shouldAutorotate = [self sp_shouldAutorotate]; } return shouldAutorotate; } - (NSUInteger)sp_supportedInterfaceOrientations { NSUInteger mask = 0; /* * In iOS 6, Apple dramatically changed the way autorotation works. * Rather than having each view controller respond to shouldAutorotateToInterfaceOrientation: * to specify whether or not it could support a particular orientation, the responsibility was * shifted to top-level container view controllers. That means UINavigationController becomes * responsible for declaring whether or not an orientation is supported. Since our app * has logic for how to autorotate on a per view controller basis, we call through to the * swizzled version of supportedInterfaceOrientations for the topViewController. * */ if ([self isKindOfClass:[UINavigationController class]]) { return [[(UINavigationController *)self topViewController] supportedInterfaceOrientations]; } if ([self respondsToSelector:@selector(shouldAutorotateToInterfaceOrientation:)]) { if ([self shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationPortrait]) { mask |= UIInterfaceOrientationMaskPortrait; } if ([self shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeLeft]) { mask |= UIInterfaceOrientationMaskLandscapeLeft; } if ([self shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight]) { mask |= UIInterfaceOrientationMaskLandscapeRight; } if ([self shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationPortraitUpsideDown]) { mask |= UIInterfaceOrientationMaskPortraitUpsideDown; } } else { // This actually calls the original method implementation // instead of recursively calling into this method implementation. mask = [self sp_supportedInterfaceOrientations]; } return mask; } #endif @end 

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореМрдЬреВрджрд╛ рдХреЛрдб рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА - рд░рдирдЯрд╛рдЗрдо рдХрд╛ рдЬрд╛рджреВ рдЯреНрд░рд┐рдХ рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдЖрдХрд░реНрд╖рдХ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдХреЛрдб рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИ (рдкрддрд╛ рд▓рдЧрд╛рдПрдБ рдХрд┐ рдХреНрдпреЛрдВ) ред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдерд╛ред

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╕реНрддреБрдд рд╕рд╛рдордЧреНрд░реА рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╕рдмрд╕реЗ рдореВрд▓реНрдпрд╡рд╛рди рд╕рдВрд╕рд╛рдзрди рдХреЛ рдмрдЪрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИ - рд╕рдордп :)

рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:

Source: https://habr.com/ru/post/In155969/


All Articles