我的故事板中有以下视图。肖像版工作没有任何问题。但我希望在横向视图中使Profile Image
更小。然后底部项目获取屏幕中的空间。我是否需要进行AutoLayout以外的编码
人像模式
横向模式
StoryBoard View
答案 0 :(得分:5)
这里的男孩是要遵循的步骤,
答案 1 :(得分:2)
您不应该将方向视为"风景"了。最好将它视为垂直:紧凑,高度:紧凑,除了6+以外,它基本上适用于所有iPhone。
的小菜单选择所需的尺寸等级。如果你不太了解它们,Xcode会告诉你每个人的用途。
控制从UIImageView
拖动到主UIView
并选择"等宽"和命令点击" Equal Heights"太。
点击UIImageView
。在" Utilities"检查栏区域(右侧面板),点击"标尺"图标,您将看到UIImageView
的约束。
调整"等高度"和"等宽"约束是视图的百分比。您可能需要根据自己的喜好进行调整。
您不需要Autolayout
以外的任何内容来执行此操作。不要直接在viewWillTransitionToSize:coordinator:
设置框架 - 您基本上对框架尺寸进行硬编码,并且您必须为每个尺寸检查UITraitCollection
class为每个设置框架。
答案 2 :(得分:1)
让约束为IBOutlet
属性,并在纵向或横向模式下调整它们。
您可以在Xcode的故事板中设置这些IBOutlet
属性。
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *imageHeightConstraint;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *imageWidthConstraint;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *buttonBottomConstraint;
// Other constraints ....
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
// Portrait mode
self.imageHeightConstraint.constant = ooo;
// Adjust other constraints
// ....
} else {
// Landscape mode
self.imageHeightConstraint.constant = xxx;
// Adjust other constraints
// ....
}
}
答案 3 :(得分:0)
您可以使用If-else条件手动为两个方向设置框架。
示例:
ReadFromStream(..)