UIToolBar和iPhone界面定位问题

时间:2009-11-28 23:42:04

标签: iphone orientation uitoolbar

我正在iPhone中开发一个应用程序。一个视图支持纵向和横向的方向。我对两个方向都有两个单独的视图。此视图顶部有UIToolbar

问题是当我将视图从横向更改为纵向时,顶部的UIToolbar消失。我希望toolbar在旋转回肖像时回到原来的位置。

这就是我在我的计划中所做的事情:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)
interfaceOrientation duration:(NSTimeInterval)duration {    
    if (interfaceOrientation == UIInterfaceOrientationPortrait)
    {
        self.view = self.portrait;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(0));
        self.view.bounds = CGRectMake(0.0, 0.0, 300.0, 480.0);  
    }
    else if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft)
    {
        self.view = self.landscape;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(-90));
        self.view.bounds = CGRectMake(0.0, 0.0, 460.0, 320.0);
    }
    else if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
    {
        self.view = self.portrait;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(180));
        self.view.bounds = CGRectMake(0.0, 0.0, 300.0, 480.0);
    }
    else if (interfaceOrientation == UIInterfaceOrientationLandscapeRight)
    {
        self.view = self.landscape;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = 
        CGAffineTransformMakeRotation(degreesToRadian(90));
        self.view.bounds = CGRectMake(0.0, 0.0, 460.0, 320.0);
    }
}

我不知道我在这里失踪了什么?任何帮助都会非常感激。

3 个答案:

答案 0 :(得分:2)

在界面构建器中,选择工具栏,按命令-3;这会打开标尺/对齐控制菜单。

在“自动调整大小”部分下,默认情况下,工具栏仅与左右和中心耦合。不是TOP。选择顶部的“I”。现在工具栏相对于视图的顶部停靠,并且在旋转期间不会被推开。

我确信还有相同的代码

答案 1 :(得分:1)

如果您只想让视图可旋转,就足以实现

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    return YES;
}
在你的viewCountroller类

答案 2 :(得分:1)

self.view.bounds = CGRectMake(0.0, 0.0, 300.0, 480.0);  

这里的问题是你的高度是480.但它应该是460.所以你现在的高度增加了20px,这可能会让屏幕稍微偏离屏幕。