这是我一直在努力解决的问题:
我正在使用loadView以编程方式创建view
。
一旦加载它在Portrait视图中看起来很棒。但是,我想处理设备的旋转。因此我使用willAnimateRotationToInterfaceOrientation
方法。
在这个方法中,我调用一个调整所有元素的函数。该函数所做的只是浏览我的所有视图,并为每个视图设置新的CGRect
。它在纵向方向(向上和向上)上工作得很好,但是一旦我将方向改为水平方向,就会裁剪。
两个问题:
答案 0 :(得分:0)
我认为你错过了关键部分。当您在纵向视图中设置框架时,视图确实加载,视图获得了框架,但当它更改为横向时,它会再次从那里更改,我认为您没有为纵向视图设置框架。使用通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];
-(void) orientationChanged:(NSNotification *)notification
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
UIDeviceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if((orientation == UIDeviceOrientationPortrait) || (orientation == UIDeviceOrientationPortraitUpsideDown)) {
// set frame here
}else if ((orientation == UIDeviceOrientationLandscapeLeft) || (orientation == UIDeviceOrientationLandscapeRight)){
// set frame here too
}
}];
}