2011-03-30 82 views
0

我有一个项目,我在XCode 4中创建,在iPad和iPhone上运行。当显示旋转时,我想知道最好的方法是让控件旋转。我的一些图像和控件需要改变,以支持不同的方向。iPad和iPhone的方向问题

理想情况下,我想有一个单独的笔尖文件,但我不知道如何切换视图。我知道我可以通过UIInterfaceOrientation等获得方向,但因为我是iDevelopment的新手,所以我不确定最好的方法来做到这一点。

任何意见和/或例子将有所帮助!

感谢, 你可能已经知道托尼

回答

2

件事:做尽可能多的,你可以使用自动调整大小面具。在理想的世界里,你会尽全力与他们做一切。尽管不难想到控制器的例子,你想要更多的控制权,而且你明显拥有控制权。在代码方面,显而易见的是执行shouldAutorotateToInterfaceOrientation并确保返回支持方向的“是”。

除此之外,你想要实现的主要是- willAnimateRotationToInterfaceOrientation:duration:。这将在视图旋转时在一个动画块中调用,并且在您以前不在之前的方向进入视图控制器时将用于立即生效。重新定位和/或改变您的视图,并根据需要获得适当的动画过渡。出于体面动画的目的,重新配置一个视图而不是从一个视图切换到另一个视图要好得多。

从一个项目,我已削减了(并重新格式化为薄文本区域位置上的StackOverflow)的示例代码:

- (void)willAnimateRotationToInterfaceOrientation: 
       (UIInterfaceOrientation)toInterfaceOrientation 
             duration:(NSTimeInterval)duration 
{ 
    if(UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) 
    { 
     nameField.frame = CGRectMake(75, 107, 225, 31); 
     nameLabel.frame = CGRectMake(20, 107, 47, 32); 

     URLField.frame = CGRectMake(75, 145, 225, 31); 
     URLLabel.frame = CGRectMake(20, 145, 47, 32); 
    } 
    else 
    { 
     nameField.frame = CGRectMake(75, 107, 155, 31); 
     nameLabel.frame = CGRectMake(20, 107, 47, 32); 

     URLLabel.frame = CGRectMake(250, 107, 35, 32); 
     URLField.frame = CGRectMake(293, 107, 167, 31); 
    } 
} 

类出口连接到一对夫妇的标签和文本字段,允许用户输入一个名字和一个URL。该代码的作用是视图根据横向或纵向从一列切换到两列。

这是一个必须硬编码的绑定,但我还没有找到更好的方法。如果您不担心动画混洗,更直观的方法可能是在NIB中分别设置两个视图,并在出现瞬间时添加/删除相关视图。

+0

嗯,这听起来不错...我可以definetly使用你上面描述的功能和重新定位我的控制,但我确实有一个图像的背景;问题 - 我该怎么做?我在两个方向都有一个图像,但我该如何去切换它们?而且,这是否搞乱了动画呢?谢谢你的帮助!!! – LilMoke 2011-03-30 19:27:22

+1

如果您设置的属性不是可设置的(根据CoreGraphics的含义),那么它将立即生效,而不考虑任何其他因素。一个想法是让这两个图像成为你视图的一部分,正确定位它们各自的方向,并通过设置其alpha属性为0或1来启用/禁用前者,因为这是可动画的。这应该会给你一个褪色。 – Tommy 2011-03-30 19:31:16

+0

非常酷!我会试一试!谢谢!! – LilMoke 2011-03-30 20:48:04