为什么向 UIImage 添加与中心对齐的约束会抛出角半径设置?

Why does adding an align with centre constraint to a UIImage throw out the radius of corners setting?

我正在尝试将方形图像变成圆形。我正在使用这段代码来做到这一点:

 profilePicture2.layer.cornerRadius = profilePicture2.frame.size.height/2   
 profilePicture2.clipsToBounds = true

它工作得很好,直到我尝试通过添加 'Align centre X to superview' 约束将图像居中放置在容器视图中。当我添加这个约束时,我只是得到非常圆的角而不是圆。

其实好像是转角半径值的一半。因此,如果图像的高度为 100,并且拐角半径应设置为 50,则看起来半径值设置为 25。

图像中没有添加其他约束。

这是怎么回事?

您在调整图像大小之前调用此代码 (profilePicture2.layer.cornerRadius = profilePicture2.frame.size.height/2)。您需要在自动布局完成后执行此操作。问题是开始的图像是(例如)100 点宽,而您将角半径设置为 50 点。之后,自动布局将图像大小调整为(同样,示例)300 点,但您的角半径保持 50 点。你只需要在自动布局完成后更新它。

或者,如果您不想拥有那么大的图像,请确保对宽度和高度施加限制,并将其置于父视图的中心。