0

这是我一直在努力解决的问题:

我正在view使用 loadView 以编程方式创建一个。加载后,它在纵向视图中看起来很棒。但是,我想处理设备的旋转。因此我使用willAnimateRotationToInterfaceOrientation方法。

在这个方法中,我调用了一个调整所有元素的函数。该功能所做的只是遍历我的所有视图并CGRect为每个视图设置新的。它在纵向(上下颠倒)上工作得很好,但是一旦我将方向更改为水平,它就会裁剪。

两个问题:

  1. 这种行为最可能的原因是什么?
  2. 您如何建议在不为水平/垂直方向创建单独视图的情况下处理设备旋转?
4

1 回答 1

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
        }
    }];
}
于 2013-10-30T13:35:08.843 回答