1

我在一个 ViewControler 中有 2 个 UIToolbar。

我需要改变他们在旋转时的位置。

我添加了 2 个网点

@property (nonatomic, retain) IBOutlet UIToolbar *toolbar1;
@property (nonatomic, retain) IBOutlet UIToolbar *toolbar2;

在 IB 中连接它们现在在 viewcontroller.mi 中使用此代码

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
        toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
    {
        toolbar1.frame = CGRectMake(0, 0, 1024, 44);
        toolbar2.frame = CGRectMake(0, 374, 1024, 44);
    }
    else
    {
        toolbar1.frame = CGRectMake(0, 0, 768, 44);
        toolbar2.frame = CGRectMake(0, 502, 768, 44);
    }
}

问题是 - 没有任何变化!

我该如何解决?

PS 使用 webviews 它可以工作

在此处输入图像描述

在此处输入图像描述 在此处输入图像描述

4

2 回答 2

2

Make sure you Uncheck Autolayout in ViewController.xib, then this code always work. Change height to see different and comment out all setting in other method.

- (void)viewDidLayoutSubviews{
    if  (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)){
        toolbar1.frame = CGRectMake(0, 0, 1024, 20);
        toolbar2.frame = CGRectMake(0, 374, 1024, 20);
    } else {
        toolbar1.frame = CGRectMake(0, 0, 768, 44);
        toolbar2.frame = CGRectMake(0, 502, 768, 44);
    }
}
于 2013-06-12T23:41:44.140 回答
1

我看到了你的代码,我知道问题出在哪里。您忘记将 Nib 中的元素连接到代码中的 IBOutlets。

在此处输入图像描述

连接奥特莱斯后,示例工作。我测试了它。

希望这可以帮助!

在此处输入图像描述

于 2013-06-13T00:09:48.767 回答