如何使用不同屏幕的约束来调整视图的高度和宽度?
Posted
技术标签:
【中文标题】如何使用不同屏幕的约束来调整视图的高度和宽度?【英文标题】:How to resize height & width of the view using constraints for different screen? 【发布时间】:2015-06-23 11:36:09 【问题描述】:我对 xocde 6 和自动布局非常陌生。我正在为多个设备设计屏幕。我有一些视图,例如图像、文本字段。我为 iPhone 设计了它们。我添加了一些固定高度和宽度约束。所以高度& width remian fix for all devices.I want to change the height & width of view acrding to screen size.我尝试了一种方法
-
使宽度等于父视图并给出乘数 0.5。
保持高度固定。
给出纵横比。
这种方式视图是对齐的,但它的高度是固定的。我也使用了前导空格,尾随空格,但这样有时会得到意想不到的结果。那么有没有更好的方法呢?我真的很难弄清楚。
【问题讨论】:
看看自适应布局教程:入门raywenderlich.com/83276/beginning-adaptive-layout-tutorial 【参考方案1】:如果您是新手,我建议您使用 PureLayout。你可以在你的项目中使用 cocoapods 或 Carthage。使用这个库,您可以超级轻松地为不同的屏幕制作此约束。 github项目中有一个示例项目,您可以在其中找到许多不同的场景。这是项目的github页面:
https://github.com/smileyborg/PureLayout
这是给你的一些示例代码 sn-p @deepak kumar:
- (void)updateViewConstraints
if (!self.didSetupConstraints)
// Apply a fixed height of 50 pt to two views at once, and a fixed height of 70 pt to another two views
[@[self.redView, self.yellowView] autoSetViewsDimension:ALDimensionHeight toSize:50.0];
[@[self.blueView, self.greenView] autoSetViewsDimension:ALDimensionHeight toSize:70.0];
NSArray *views = @[self.redView, self.blueView, self.yellowView, self.greenView];
// Match the widths of all the views
[views autoMatchViewsDimension:ALDimensionWidth];
// Pin the red view 20 pt from the top layout guide of the view controller
[self.redView autoPinToTopLayoutGuideOfViewController:self withInset:20.0];
// Loop over the views, attaching the left edge to the previous view's right edge,
// and the top edge to the previous view's bottom edge
[[views firstObject] autoPinEdgeToSuperviewEdge:ALEdgeLeft];
UIView *previousView = nil;
for (UIView *view in views)
if (previousView)
[view autoPinEdge:ALEdgeLeft toEdge:ALEdgeRight ofView:previousView];
[view autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:previousView];
previousView = view;
[[views lastObject] autoPinEdgeToSuperviewEdge:ALEdgeRight];
self.didSetupConstraints = YES;
[super updateViewConstraints];
我相信如果你现在就可以开始,你会更容易通过自动布局的头痛。
【讨论】:
【参考方案2】:我不确定您要问什么,但如果您不希望 Text View 被填充,这听起来像是一个 Auto Layout 问题在整个屏幕上,继续并在 Main.storyboard 中选择 文本视图,然后点击 >Pin 按钮,如下所示:
请注意,所有约束都已启用,这意味着此文本视图将固定在 ios 屏幕的边缘。
如果您想稍后编辑这些约束,请继续并转到 Size Inspector,您可以直接单击约束:
【讨论】:
嗯,我想问的是如何在 ios 中更改不同屏幕手机的视图宽度和高度。示例我有一个按钮的宽度 = 20 和高度 = 20。它在 4 英寸屏幕上看起来很好,但在 iPad 上这看起来非常小,所以我想以相等的比例更改高度和宽度,这样它看起来就不会奇怪。 @贾斯汀 这就是 Auto Layout 将发挥作用的地方,类似于我们上面所做的,请查看本教程:raywenderlich.com/83129/… 没有什么比支持多设备的了。它们只是一个设备并旋转它。 这就是自动布局的意义所在,它自动根据您运行的设备调整大小。 @deepakkumar 那你做错了。但是正如你上面所说的“我不想编码”,那我们为什么要帮助你呢?以上是关于如何使用不同屏幕的约束来调整视图的高度和宽度?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 约束。如何通过约束设置图像视图高度比率等于图像比率?