屏幕切换时,会发送一个通知。只要注册一个通知:
[[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];
}
}