首页 文章

旋转到横向以手动添加到层次结构的视图(iPhone)

提问于
浏览
0

我有一个简单的UIViewController,它使用XIB作为其接口 .

因此,界面简单地包括UIView,UIActivityIndicator和UILabel . 我在Interface Builder中设置了大小限制,以便在视图旋转时保持活动指示器和标签居中 .

UIViewController设置为在 -shouldAutorotateToInterfaceOrientation: 方法中为纵向和横向方向返回YES .

使用,将视图手动添加到视图层次结构中

if (!activityOverlay)
    activityOverlay = [[XBActivityOverlayViewController alloc] initWithNibName:@"XBActivityOverlayViewController" bundle:nil message:@"Connecting..."];

[activityOverlay.view setAlpha:0.0f];
[self.window addSubview:activityOverlay.view];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3f];
[activityOverlay.view setAlpha:0.9f];
[UIView commitAnimations];

我遇到的问题是,如果设备已经处于横向,并且此时视图已添加到层次结构中,则视图仍处于纵向方向,并且不会自动旋转 .

如何以与父视图相同的方向添加视图,我需要做什么?

1 回答

  • 1

    我不知道这是否是你问题的正确答案,但我希望可以提供帮助:

    对我来说,每次添加/关闭模态或显示新视图时,都会调用以下函数:

    -(void) detectOrientation 
    {
    
    
     if (([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeLeft) || 
         ([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeRight)) 
     {
    
                 item1.frame = CGRectMake(147.0, 241.0, 56.0, 28.0);
         item2.frame = CGRectMake(265.0, 241.0, 56.0, 28.0);
    
     }
     else if (([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortrait) ||
              ([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortraitUpsideDown) || !inLandscapeOrientation)
     {
    
        item1.frame = CGRectMake(35.0, 425.0, 35.0, 28.0);
    item2.frame = CGRectMake(176.0, 425.0, 35.0, 28.0);
     }
    
    }
    

    在这里,我根据当前设备方向更改位置 . 也许如果您检测到当前方向是横向的,则添加具有此方向的子视图 .

    亚历杭德拉:)

相关问题