在使用自动布局时,我对如何设置视图的大小以及更重要的标签/按钮/图像的大小感到困惑。
我已经阅读了几十个网页的观点。许多人说,如果我正确地使用了自动布局,我就不需要明确地说明视图对象的大小。然而,自动布局似乎几乎需要明确的尺寸限制!如果我不给他们,自动布局说我的图像和视图大小是"模糊的"。
我也想知道当我的conatraints加载到视网膜显示器上时,自动布局会做什么。我的300x90图像会突然变大一半吗?我从顶部钉70的视图现在会被导航栏覆盖吗?大多数自动布局教程都关注如何使用约束,而不是iOS如何在不同设备上操作我的300x90图像。
看起来,如果他们希望视图是流动的,那么我应该指定百分比,而不是特定的像素测量!
有人能帮助我更好地理解我的观点会如何放大和缩小吗?
我已经阅读了几十个网页的观点。很多人说如果我是正确使用自动布局,我不需要显式地声明视图对象的大小。然而,汽车布局似乎几乎需要正是这样,明确的尺寸限制!如果我不给他们,auto布局显示我的图像和视图大小"不明确"。
在此处区分正常视图和滚动视图非常重要。对于普通视图,您可以布置内容,并将视图约束到超级视图的边缘或周围视图,这很有效。
对于滚动视图,Auto Layout必须能够计算contentView的大小。这可以通过以下两种方式之一实现。您可以1)通过约束显式设置contentView的宽度和高度,在这种情况下,您现在可以将contentView视为普通视图并相应地进行布局;或者2)显式调整和约束contentView中的所有对象的大小,以便根据其包含的对象的大小来计算contentView的大小。换句话说,您可以固定contentView的大小,以便AutoLayout可以放置其他项目,也可以固定项目的大小,使AutoLayout能够计算contentView的尺寸。
我也想知道当我的conatraints时自动布局会做什么被加载在视网膜显示器上。我的300x90图像会突然减半吗尺寸?我从顶部钉70的视图现在会被导航栏?大多数自动布局教程侧重于如何使用限制,而不是我的300x90图像将如何被iOS操作不同的设备。
约束是以点而非像素进行的。您的300x90
图像是300
点乘以90
点。它的大小将适合所有设备。如果您为@2X和@3X提供额外的图像资源,它甚至会为每个设备使用正确的图像。
似乎,如果他们希望视图流畅,那么我应该指定百分比,而不是特定的像素测量!
您可以使用约束的乘数属性来实现百分比。例如,如果希望图像宽度为超级视图宽度的50%,请在图像视图及其超级视图之间设置等宽约束,然后将乘数更改为0.5
。