你如何处理人像和风景?

时间:2009-03-23 16:32:53

标签: iphone

我知道你可以为整个应用程序指定一个风景,但如果它部分在横向和部分在纵向中会怎么样。

目前我有一些基本上是图像的视图。这些图像已经旋转,以便用户知道应用程序的某些部分将处于横向模式。我的所有UILabel也都会旋转以产生这种效果。

我的问题是,有没有更好的方法来处理这个问题。有没有办法在运行时以编程方式设置方向?在这种情况下,我不再需要旋转我的图像/ uilabels。

为了澄清,我不需要自动轮换功能,现在实现它的方式是捕获我想要包含在应用程序中的所有功能但我只是想知道是否有一种不那么繁琐的处理方式同一应用程序中的横向/纵向视图。

2 个答案:

答案 0 :(得分:4)

您可以随时强制轮换;

UIApplication *application = [UIApplication sharedApplication];    
[application setStatusBarOrientation: UIInterfaceOrientationWHATEVER animated:NO];

我目前的应用程序主要是横向,但有一些纵向视图。在与用户应该能够旋转的视图对应的视图控制器中,我允许旋转但是阻止动画。这样您就可以切换到NIB中的另一个视图,而不会出现任何奇怪的滑动屏幕,通常会在动画过程中堆积在视图上。

希望你觉得这很有用!

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if (interfaceOrientation == UIInterfaceOrientationPortrait) {
    rotatingToPortrait = YES;
    [UIView setAnimationsEnabled:NO];
    return YES;
} else if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
    rotatingToPortrait = NO;
    [UIView setAnimationsEnabled:NO];
    return YES;
}
// Catch upside-down
return NO; }

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
[UIView setAnimationsEnabled:YES];
if (rotatingToPortrait) {
    // Swap in portrait view here
} else {
    // Swap it out here
} }

答案 1 :(得分:0)

目前我不知道以任何方式以编程方式控制方向。意思是没有办法告诉设备“现在旋转到风景”。您只能指定以下内容:

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

您可以指定哪些视图控制器支持哪些方向,并通过覆盖函数对方向更改做出反应,但是系统是否确定调用这些函数的时间和方式。您也可以从UIDevice类中获取更详细的消息。

如果我理解你所说的内容,你的应用基本上只是一个方向,但你只是以不同的方式绘制各种视图,以使应用的某些部分看起来像是纵向/横向模式?听起来你正试图在圆孔中放置一个正方形,iPhone的方向API并不是为这种行为而设计的,而且你最好不要使用API​​而不是反对它们。