Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用“自动布局”调整子视图以保持其大小_Objective C_Autolayout - Fatal编程技术网

Objective c 使用“自动布局”调整子视图以保持其大小

Objective c 使用“自动布局”调整子视图以保持其大小,objective-c,autolayout,Objective C,Autolayout,我有一个包含如下子视图的UIView: 该视图最初设计时考虑了320宽度。iphone5s及更低版本。不过,我现在正在对其进行调整,以便与iPhone 6+配合使用 我面临的问题是如何使子视图的宽度增加,以适应其超级视图左右两侧的额外空间。我似乎只能使中心视图的宽度增加,而不能使外部视图增加。我需要应用或更改哪些约束条件才能使所有视图稍微增大以容纳侧面的额外空间 嗨 如果在interface builder中设计视图,可以尝试以下方法: 1-将所有视图设置为特定的宽度和高度 2-拐角处的视图

我有一个包含如下子视图的UIView:

该视图最初设计时考虑了320宽度。iphone5s及更低版本。不过,我现在正在对其进行调整,以便与iPhone 6+配合使用

我面临的问题是如何使子视图的宽度增加,以适应其超级视图左右两侧的额外空间。我似乎只能使中心视图的宽度增加,而不能使外部视图增加。我需要应用或更改哪些约束条件才能使所有视图稍微增大以容纳侧面的额外空间

如果在interface builder中设计视图,可以尝试以下方法:

1-将所有视图设置为特定的宽度和高度 2-拐角处的视图使用静态值将销添加到边缘。 3 -中间视图添加顶部或底部的PIN,并向超视域

的水平中心添加对齐约束
不确定这是否有帮助,请尝试回答

下面是一个完整的示例,说明如何通过编程(使用虚拟视图)实现此目的:

附件分别是iPhone 5s、iPhone 6和iPhone 6 Plus的屏幕截图:

iphone5s

iphone6

iphone6plus


我希望这至少为您指明了正确的方向=)

禁用自动布局并在界面生成器中使用自动调整大小的遮罩

我的整个项目广泛使用自动布局。因为这个视图在我的故事板中,所以我不能为一个场景关闭AL。不过谢谢。这并不是我最初想要的。然而,结果更好。现在,我的观点之间有了更多的空间,这似乎起到了作用。谢谢你的帮助!这无疑为我指明了正确的方向,并给出了我想要的最终结果。谢谢你的详细回答。我将在项目中的其他地方使用VFL,如您所演示的。:)
// Simple example demonstrating the below screenshots


// Create containers to hold each row of subviews
UIView *container1 = [UIView new];
container1.translatesAutoresizingMaskIntoConstraints = NO;
container1.backgroundColor = [UIColor redColor];
UIView *container2 = [UIView new];
container2.translatesAutoresizingMaskIntoConstraints = NO;
container2.backgroundColor = [UIColor orangeColor];

// Create the subviews
UIView *v1 = [UIView new];
v1.translatesAutoresizingMaskIntoConstraints = NO;
v1.backgroundColor = [UIColor grayColor];
UIView *v2 = [UIView new];
v2.translatesAutoresizingMaskIntoConstraints = NO;
v2.backgroundColor = [UIColor blackColor];
UIView *v3 = [UIView new];
v3.translatesAutoresizingMaskIntoConstraints = NO;
v3.backgroundColor = [UIColor greenColor];
UIView *v4 = [UIView new];
v4.translatesAutoresizingMaskIntoConstraints = NO;
v4.backgroundColor = [UIColor purpleColor];
UIView *v5 = [UIView new];
v5.translatesAutoresizingMaskIntoConstraints = NO;
v5.backgroundColor = [UIColor blueColor];
UIView *v6 = [UIView new];
v6.translatesAutoresizingMaskIntoConstraints = NO;
v6.backgroundColor = [UIColor yellowColor];

// add the subviews
[container1 addSubview:v1];
[container1 addSubview:v2];
[container1 addSubview:v3];
[container2 addSubview:v4];
[container2 addSubview:v5];
[container2 addSubview:v6];

// Add the containers to the root view (in this case self.view)
[self.view addSubview:container1];
[self.view addSubview:container2];

// Add constraints for the containers
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[container1]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(container1)]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[container2]-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(container2)]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-64.0-[container1(==100)]-[container2(==container1)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(container1, container2)]];

// Add constraints in both VFL and regular NSConstraints to the subviews of container 1
[container1 addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[v1]-[v2(==v1)]-[v3(==v1)]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(v1,v2,v3)]];
[container1 addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[v1]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(v1)]];
[container1 addConstraint:[NSLayoutConstraint constraintWithItem:v2 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:v1 attribute:NSLayoutAttributeHeight multiplier:1.0f constant:0.0f]];
[container1 addConstraint:[NSLayoutConstraint constraintWithItem:v2 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:container1 attribute:NSLayoutAttributeTop multiplier:1.0f constant:0.0f]];
[container1 addConstraint:[NSLayoutConstraint constraintWithItem:v3 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:v1 attribute:NSLayoutAttributeHeight multiplier:1.0f constant:0.0f]];
[container1 addConstraint:[NSLayoutConstraint constraintWithItem:v3 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:container1 attribute:NSLayoutAttributeTop multiplier:1.0f constant:0.0f]];

// Add constraints in both VFL and regular NSConstraints to the subviews of container 2
[container2 addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[v4]-[v5(==v4)]-[v6(==v4)]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(v4,v5,v6)]];
[container2 addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[v4]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(v4)]];
[container2 addConstraint:[NSLayoutConstraint constraintWithItem:v5 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:v4 attribute:NSLayoutAttributeHeight multiplier:1.0f constant:0.0f]];
[container2 addConstraint:[NSLayoutConstraint constraintWithItem:v5 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:container2 attribute:NSLayoutAttributeTop multiplier:1.0f constant:0.0f]];
[container2 addConstraint:[NSLayoutConstraint constraintWithItem:v6 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:v4 attribute:NSLayoutAttributeHeight multiplier:1.0f constant:0.0f]];
[container2 addConstraint:[NSLayoutConstraint constraintWithItem:v6 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:container2 attribute:NSLayoutAttributeTop multiplier:1.0f constant:0.0f]];