我可以在横向模式和纵向模式下将界面构建器用于我的字段中的不同位置吗?

时间:2012-12-18 13:39:54

标签: ios interface-builder

我可以在横向模式和纵向模式下将界面构建器用于我的字段中的不同位置吗? (完全不同,所以我不能只使用布局属性)?

或者代码是唯一的方法吗?

感谢

4 个答案:

答案 0 :(得分:0)

如果纵向和横向模式共享的字段相同,我会说代码。如果每种模式中都有不同的对象,那就不是一个好主意。

答案 1 :(得分:0)

您可以使用willRotateToInterfaceOrientation方法。当您更改设备方向时,它将调用..

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{
  return YES;
}

-(void)willRotateToInterfaceOrientation: (UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
 {
    if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation)) 
    {

      [label setFrame:CGRectMake(20, 52, 728, 617)];

    }
     else

    {

    [label setFrame:CGRectMake(20, 52, 728, 617)];

    }

 }

答案 2 :(得分:0)

您可以在界面构建器中保留两个UIView,当用户旋转设备时,您可以隐藏一个并根据方向显示另一个。您可以尝试以下代码行吗?

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    if(([self.navigationController.visibleViewController interfaceOrientation] == UIDeviceOrientationLandscapeLeft) || ([self.navigationController.visibleViewController interfaceOrientation] == UIDeviceOrientationLandscapeRight)){
        self.viewLandscape.hidden = NO;
        self.viewPortrait.hidden = YES;
    }
    else {
        self.viewLandscape.hidden = YES;
        self.viewPortrait.hidden = NO;
    }
}

答案 3 :(得分:0)

以下是您可以使用的方法。最佳方法是最重要的
1。最好使用自动布局来调整视图。
2. 自动布局+代码
3。仅限代码。
4. 您可以为xib创建两个视图,一个用于横向,一个用于纵向。并根据方向显示和隐藏。但在此,您需要将所有纵向视图与横向视图(文本等属性)同步,反之亦然。这很容易维护,但是你必须更加头痛地同步每个视图的属性。