- 屏幕切换时,会发送一个通知。只要注册一个通知:
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(doRotateAction:)
- name:UIDeviceOrientationDidChangeNotification
- object:nil];
然后在方法里做操作:
- -(void) doRotateAction:(NSNotification *) notification{
- if ([[UIDevice currentDevice] orientation]==UIInterfaceOrientationPortrait
- || [[UIDevice currentDevice] orientation]==UIInterfaceOrientationPortraitUpsideDown) {
- NSLog(@">>>portrait");
- }else{
- NSLog(@">>>landscape");
- }
- }
如果要在入口文件做切换屏幕,可以判断状态栏的方向:
- ////////////////////////////////////
- //通知委托状态栏已改变,进横竖屏操作
- -(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];
- }
- }