如何在不使用固定高度和宽度的情况下使用自动布局维护圆形uiview

时间:2018-09-22 00:41:52

标签: ios swift autolayout

使用自动布局而不固定高度和宽度时,我在维护圆形uiimageview时遇到问题。

示例在具有固定高度的uiview容器内设置了固定高度/宽度。

storyboard constraints

Circular image

inviewwillayoutsubview

{{1}}

示例在具有固定高度的uiview容器中没有固定高度/宽度的示例。

Storyboard constraints

Circular image

目标:我要实现的目标是创建一个可缩放为所有设备屏幕尺寸的圆形uiimageview。我相信问题在于,如果没有固定的高度和宽度,我的cornerRadius对于一个圆是不正确的。

在没有设置固定宽度和高度的情况下实现此效果的最佳方法是什么,因为这不适用于所有屏幕尺寸。

1 个答案:

答案 0 :(得分:0)

第一个问题是,您将视图固定到其父级的所有边缘,并具有固定的边距。

这很可能会在故事板上产生一个正方形,但不一定会在您的设备上显示(这取决于您的父母是否被限制为正方形,我无法在您的屏幕截图中看到该正方形)。如果父级拉伸其宽度以适合其自己的超级视图,但不调整其高度,则图像将拉伸为矩形。

情况似乎是这样,因为图像显示为水平拉伸。

我建议您从图像视图中删除所有约束,然后重新开始。

使图像的宽度等于其父视图的0.8,将其设置为1:1的比例,并使其与父视图水平和垂直居中。

第二个问题是,您可能太早设置了cornerRadius。

从情节提要中加载视图时,其宽度和高度与情节提要中的大小相同。

将视图放置在其父视图中后,宽度/高度将被调整,并且您将获得不正确的cornerRadius。

要解决此问题,只需确保视图上的宽高比为1:1,并在viewDidLayoutSubviews(而不是viewWillLayoutSubviews)中设置cornerRadius。