Iphone 使用自动布局更改约束
我在视图中有一个方格按钮,非常适合iPhone 5。我现在希望它在3.5英寸的屏幕上看起来也不错。我正在使用自动布局,我已经为3.5英寸的屏幕创建了一些新的图像,这些图像的高度稍微小一些,这样它们就可以放在屏幕上了(它们不再是正方形了)。据我所知,在使用自动布局时,您不能像往常一样使用框架吗?相反,您应该使用约束。但是我该怎么做呢 基本上我需要做的是改变y坐标和按钮的高度 这是4英寸屏幕(底部的选项卡栏)上屏幕外观的示例Iphone 使用自动布局更改约束,iphone,ios,autolayout,Iphone,Ios,Autolayout,我在视图中有一个方格按钮,非常适合iPhone 5。我现在希望它在3.5英寸的屏幕上看起来也不错。我正在使用自动布局,我已经为3.5英寸的屏幕创建了一些新的图像,这些图像的高度稍微小一些,这样它们就可以放在屏幕上了(它们不再是正方形了)。据我所知,在使用自动布局时,您不能像往常一样使用框架吗?相反,您应该使用约束。但是我该怎么做呢 基本上我需要做的是改变y坐标和按钮的高度 这是4英寸屏幕(底部的选项卡栏)上屏幕外观的示例 在VFL中表示这一点,您需要的是: 使垂直红色框的大小垂直均匀,跨越其su
在VFL中表示这一点,您需要的是: 使垂直红色框的大小垂直均匀,跨越其superview的垂直跨度:
@"V:|-[subview1]-[subview2(==subview1)]-[subview3(==subview1)]-|"
@"V:|-[subview4]-[subview5(==subview4)]-[subview6(==subview4)]-|"
同样,使长方体的大小在水平方向上均匀,并跨越其superview的水平跨度:
@"H:|-[subview1]-[subview4(==subview1)]-|"
@"H:|-[subview2]-[subview5(==subview2)]-|"
@"H:|-[subview3]-[subview6(==subview3)]-|"
这使得六个子视图在其superview中大小相等且间隔均匀。这说明了自动布局的优点之一,因为我们非常明确地避免了对y
或height
值的任何引用。我们只需要定义视图、它们的兄弟视图和它们的superview之间的关系,而auto layout会处理其余的部分
无论您是使用上面的VFL以编程方式还是在Interface Builder中,此模式都适用,但希望它能说明这个概念
或者,您可以使用UICollectionView
,该视图设计用于隔开这些控件,您可以对其进行设置,使其正确调整纵向和横向布局
例如,要将六个图像视图添加到我的视图中,我可以将QuartzCore.framework添加到项目中(我可以使用它创建带有圆角的红色图像视图背景),然后导入标题:
#import <QuartzCore/QuartzCore.h> // and
然后,如果我使用具有透明背景的PNG图像,我可以为这六个图像视图设置图像
属性,让自动布局定义帧
,QuartzCore将完成漂亮的圆角等
NSMutableArray *subviews = [NSMutableArray array];
for (NSInteger i = 0; i < 6; i++)
{
UIImageView *subview = [[UIImageView alloc] init];
[subviews addObject:subview];
subview.layer.cornerRadius = 10.0;
subview.backgroundColor = [UIColor redColor];
subview.contentMode = UIViewContentModeCenter;
subview.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:subview];
}
NSDictionary *views = @{@"subview1": subviews[0],
@"subview2": subviews[1],
@"subview3": subviews[2],
@"subview4": subviews[3],
@"subview5": subviews[4],
@"subview6": subviews[5]};
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[subview1]-[subview2(==subview1)]-[subview3(==subview1)]-|" options:0 metrics:nil views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[subview4]-[subview5(==subview4)]-[subview6(==subview4)]-|" options:0 metrics:nil views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[subview1]-[subview4(==subview1)]-|" options:0 metrics:nil views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[subview2]-[subview5(==subview2)]-|" options:0 metrics:nil views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[subview3]-[subview6(==subview3)]-|" options:0 metrics:nil views:views]];