如何设置横向模式或纵向模式的应用程序控件?

Posted

技术标签:

【中文标题】如何设置横向模式或纵向模式的应用程序控件?【英文标题】:How to set the app controls for landscape mode or portrait mode? 【发布时间】:2015-09-23 10:11:54 【问题描述】:

我知道自动布局可用于在方向更改时使大小和位置保持一致。方向改变时是否可以完全改变布局?意味着当设备旋转到横向模式时,所有控制器都可以改变它们的位置并相应地设置设备模式。这可以为 iPhone 4,5,6 ,6 plus 的所有设备完成。不使用情节提要。任何人都可以帮助我解决这个问题。提前致谢。

【问题讨论】:

【参考方案1】:

**** 用于查看到超级视图 [self addEdgeConstraint:NSLayoutAttributeLeft superview:self.view subview:subView];

[self addEdgeConstraint:NSLayoutAttributeRight superview:self.view subview:subView];

[self addEdgeConstraint:NSLayoutAttributeTop superview:self.view subview:subView];

[self addEdgeConstraint:NSLayoutAttributeBottom superview:self.view subview:subView];

-(void)addEdgeConstraint:(NSLayoutAttribute)edge superview:(NSView *)superview subview:(NSView *)subview

[superview addConstraint:[NSLayoutConstraint constraintWithItem:subview attribute:edge relatedBy:NSLayoutRelationEqual toItem:superview attribute:edge multiplier:1 constant:0]];

视图之间的垂直间距

NSMutableArray* newVerticalConstraints = [NSMutableArray 数组];

[newVerticalConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-10-[view1]” options:0 metrics:nil views:NSDictionaryOfVariableBindings(viewMainBanner)]];

[newVerticalConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:[NSString stringWithFormat:@"V:[view1]-%d-[view2]”,10] options:0 metrics:nil views:NSDictionaryOfVariableBindings(view1, view2)]];

[newVerticalConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:[NSString stringWithFormat:@"V:[view2]-%d-[view3]”,10]  options:0 metrics:nil views:NSDictionaryOfVariableBindings(view2, view3)]];

[newVerticalConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[view3]-10-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view3)]];

[self.view addConstraints:newVerticalConstraints];***

///我们可以使用 'H' 代替 v 来表示水平间距

【讨论】:

你能解释更多你的答案吗?我找不到你 如果您需要在视图的左侧部分和它的超级视图之间留出空间,请使用 [self addEdgeConstraint:NSLayoutAttributeLeft superview:self.view subview:subView]; 对于两个视图之间的垂直空间 NSMutableArray* newVerticalConstraints = [NSMutableArray array]; [newVerticalConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:[NSString stringWithFormat:@"V:[view1]-%d-[view2]”,10] 选项:0 指标:nil 视图:NSDictionaryOfVariableBindings(view1, view2)]]; [self.查看 addConstraints:newVerticalConstraints]; 此代码不适用于垂直空间。您上面的 addEdge 代码可以正常工作。您能否再次纠正此问题 NSMutableArray* newVerticalConstraints = [NSMutableArray 数组]; [newVerticalConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-10-[view1]" options:0 指标:nil 视图:NSDictionaryOfVariableBindings(view1)]]; [newVerticalConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:[NSString stringWithFormat:@"V :[view1]-%d-[view2]”,10] 选项:0 指标:nil 视图:NSDictionaryOfVariableBindings(view1, view2)]]; [self.view addConstraints:newVerticalConstraints]; view1 和 view2 是您的子视图对象

以上是关于如何设置横向模式或纵向模式的应用程序控件?的主要内容,如果未能解决你的问题,请参考以下文章

将应用程序转换为 IPAD 时如何保持横向或纵向模式?

应用程序第一次处于纵向模式,如果设备处于横向模式

如何仅将整个应用程序设置为纵向模式?

如何以编程方式将我的 android 应用程序锁定为纵向/横向模式?

iPad 纵向应用程序以横向模式加载 iAd

即使用户在横向模式下旋转他们的设备,是不是在 Gluon API 中保持我们的应用程序处于纵向模式?