在横向导向设备的纵向视图

时间:2013-12-17 14:27:00

标签: ios uiviewcontroller uiinterfaceorientation

我目前正在使用customViewController而没有在界面构建器中设计任何界面。你知道,我的目标是实现一个带有容器行为的layerViewController。

一切顺利,我所包含的viewControllers表现正常,但只有一件事:我希望所有这些都只能在横向模式下打印

所以在我的init方法中,我以编程方式设置customViewController的框架,如下所示:

self.view.frame = [UIScreen mainScreen].applicationFrame;

告诉它:

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

此时一切似乎都很好,但结果是:

enter image description here 虽然设备了解它只允许处于横向模式,但它肯定会给我一个纵向视图。 (如果我删除了supportedInterfaceOrientations方法,则视图只能以纵向模式显示。)

为什么会这样?

修改

我确实尝试按以下方式添加以编程方式设置的约束:

NSLayoutConstraint *topConstraint = [NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.topLayoutGuide attribute:NSLayoutAttributeTop multiplier:1.0 constant:0];

NSLayoutConstraint *botConstraint = [NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.bottomLayoutGuide attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0];

NSLayoutConstraint *leadingConstraint = [NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view.superview attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0];

NSLayoutConstraint *trailingConstraint = [NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view.superview attribute:NSLayoutAttributeTrailing multiplier:1.0 constant:0];

[self.view addConstraints:@[topConstraint, botConstraint, leadingConstraint, trailingConstraint]];

但没有更令人满意的结果:(

编辑2

我尝试使用myViewController.view.framemyViewController.view.bounds,但没有任何帮助,我的框架永远不会设置为正确的景观。我有点迷失在这一个......

1 个答案:

答案 0 :(得分:0)

您需要使用xcode中提供的Autolayout功能来正确排列UI组件,以便在设备方向处于横向模式时自动排列组件。

http://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in-ios-7-part-1

查看上面的教程,了解并了解AutoLayout功能。