[java] view plain copy [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doRotateAction:) name:UIDeviceOrientationDidChangeNotification object:nil];
然后在方法里做操作:
[java] view plain copy -(void) doRotateAction:(NSNotification *) notification{ if ([[UIDevice currentDevice] orientation]==UIInterfaceOrientationPortrait || [[UIDevice currentDevice] orientation]==UIInterfaceOrientationPortraitUpsideDown) { NSLog(@">>>portrait"); }else{ NSLog(@">>>landscape"); } }
如果要在入口文件做切换屏幕,可以判断状态栏的方向:
[java] view plain copy //通知委托状态栏已改变,进横竖屏操作 -(void)application:(UIApplication *)application didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation{ //清除背景,防止上一次转屏的图像残留 [imageview setBackgroundColor:[UIColor clearColor]]; //以下是横竖屏4个方向的切换,注意转屏时,无论是转哪个屏。起点坐标都是在portrait方向的起点(0,0)来计算的 if ([[UIDevice currentDevice] orientation]==UIInterfaceOrientationPortrait ) { NSLog(@">>>portrait"); //home键在下 imageview = [[UIImageView alloc] initWithFrame:CGRectMake(0, 20, 768, 44)]; imageview.backgroundColor = [UIColor redColor]; [_window addSubview:imageview]; }else if([[UIDevice currentDevice] orientation]==UIInterfaceOrientationPortraitUpsideDown){ NSLog(@">>>PortraitUpsideDown"); //home键在上 imageview = [[UIImageView alloc] initWithFrame:CGRectMake(0, 960, 768, 44)]; imageview.backgroundColor = [UIColor redColor]; [_window addSubview:imageview]; }else if([[UIDevice currentDevice] orientation]==UIInterfaceOrientationLandscapeLeft){ NSLog(@">>>LandscapeLeft"); //home键在左 imageview = [[UIImageView alloc] initWithFrame:CGRectMake(20, 0, 44, 1024)]; imageview.backgroundColor = [UIColor redColor]; [_window addSubview:imageview]; } else if([[UIDevice currentDevice] orientation]==UIInterfaceOrientationLandscapeRight){ NSLog(@">>>LandscapeRight"); //home键在右 imageview = [[UIImageView alloc] initWithFrame:CGRectMake(704, 0, 44, 1024)]; imageview.backgroundColor = [UIColor redColor]; [_window addSubview:imageview]; } }
转载于:https://www.cnblogs.com/piaojin/p/5083004.html
相关资源:JAVA上百实例源码以及开源项目