首先 先在viewWillAppear 里面 注册通知
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
//注册屏幕旋转 消息通知
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(changeFrames:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
}
在viewDidLoad 初始化控件
收到通知后
//收到通知后改变view坐标
-(void)changeFrames:(NSNotification *)notification
{
CGRect rect = [UIScreen mainScreen].bounds;
if ([[UIDevice currentDevice] orientation]==UIInterfaceOrientationPortrait
|| [[UIDevice currentDevice] orientation]==UIInterfaceOrientationPortraitUpsideDown)
{
NSLog(@"portrait");
_fancyTabBar.frame=CGRectMake(rect.size.width-300,rect.size.height-300, 300, 300);
}
else
{
NSLog(@"横屏");
_fancyTabBar.frame=CGRectMake(rect.size.height-40,rect.size.width-550, 300, 300);
}
}
如果是ipad 版
//收到通知后改变view坐标
-(void)changeFrames:(NSNotification *)notification
{
CGRect rect = [UIScreen mainScreen].bounds;
if ([[UIDevice currentDevice] orientation]==UIInterfaceOrientationPortrait)
{
NSLog(@"竖屏home在下");
_fancyTabBar.frame=CGRectMake(rect.size.width-550,rect.size.height-550, 600, 700);
}
else if ([[UIDevice currentDevice] orientation]==UIInterfaceOrientationPortraitUpsideDown)
{
NSLog(@"竖屏home在下");
_fancyTabBar.frame=CGRectMake(rect.size.width-550,rect.size.height-550, 600, 700);
} else if ([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeLeft ){
NSLog(@"横屏home在左");
_fancyTabBar.frame=CGRectMake(rect.size.height-300,rect.size.width-800, 600, 600);
} else{
NSLog(@"横屏home在右");
_fancyTabBar.frame=CGRectMake(rect.size.height-300,rect.size.width-800, 600, 600);
}
}