我目前正在使用customViewController
而没有在界面构建器中设计任何界面。你知道,我的目标是实现一个带有容器行为的layerViewController。
一切顺利,我所包含的viewControllers表现正常,但只有一件事:我希望所有这些都只能在横向模式下打印。
所以在我的init方法中,我以编程方式设置customViewController
的框架,如下所示:
self.view.frame = [UIScreen mainScreen].applicationFrame;
告诉它:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
此时一切似乎都很好,但结果是:
虽然设备了解它只允许处于横向模式,但它肯定会给我一个纵向视图。 (如果我删除了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.frame
和myViewController.view.bounds
,但没有任何帮助,我的框架永远不会设置为正确的景观。我有点迷失在这一个......
答案 0 :(得分:0)
您需要使用xcode中提供的Autolayout功能来正确排列UI组件,以便在设备方向处于横向模式时自动排列组件。
http://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in-ios-7-part-1
查看上面的教程,了解并了解AutoLayout功能。