Разработих моето приложение (поддръжка само на пейзаж) в Xcode 4.0 и успешно надстроих до всеки нов IOS, но с ios 7, тъй като знаем, че лентата на състоянието има нова промяна, тази трансулираща лента в горната част на изгледа, както е показано на изображението по-долу
Но аз реших това, като промених стойността на параметъра viewcontrollerbasedstatusappearance като NO в plist и също vlaue на източника на прозореца x координата на 20 пиксела (защо координатата x означава, че приложението ми се стартира принудително в пейзажна ориентация), работи в хоризонтална дясна ориентация. И резултатът е по-долу показано на снимката по-долу, а кодът е тук
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions{
self.window = [[[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds] autorelease];
if (DEVICE_IS_IPHONE || DEVICE_IS_IPHONE5)
{
[UIApplication sharedApplication].statusBarHidden=YES;
}
else if(DEVICE_IS_IPAD)
{
[UIApplication sharedApplication].statusBarHidden=NO;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
[application setStatusBarStyle:UIStatusBarStyleLightContent];
self.window.clipsToBounds=YES;
self.window.frame=CGRectMake(self.window.frame.origin.x+20, self.window.frame.origin.y, self.window.frame.size.width-20, self.window.frame.size.height);
}
}
mLoginController = [[LoginViewController alloc]init];
mNavigationController = [[UINavigationController alloc ] initWithRootViewController:mLoginController];
self.window.rootViewController = mNavigationController;
[self.window addSubview:[mNavigationController view]];
[self.window makeKeyAndVisible];
[mLoginController release];
return YES;
}
И в loginviewcontroller с изгледа, както е показано по-долу, използвам метода loadview, за да отменя изгледа на контролерите като по-долу, за ваша информация промених това, за да използвам директно viewdidload, въпреки че възниква същият проблем.
-(void)loadView{
CGSize theSize = CGSizeMake(1, 1);
CGRect theFrameRect = [UtilityMethods getAbsoluteFrameForSize:theSize];//i will get the exact
screen size based on device
UIView *theLoginView = [[UIView alloc]initWithFrame:CGRectMake(0, 40, theFrameRect.size.width,
theFrameRect.size.height)];
self.view = theLoginView;
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleTopMargin;
self.view.backgroundColor = [UIColor blackColor];
}
Но ако отново се завъртя в пейзажно ляво, лентата на състоянието идва отгоре на изгледа, а рамката на лентата на състоянието е отдолу, както е показано на снимката по-долу. Можете да наблюдавате черния изглед в долната част на снимката по-долу, което се надявам рамка на прозореца на лентата на състоянието.
Така че, моля, кажете ми на някой как да се справя с това, за да поддържам ios 6 и 7 възможно най-скоро. Благодаря предварително.