Ios 在TableViewCell中设置纵横比的多个圆形UIImageView的自动布局

Ios 在TableViewCell中设置纵横比的多个圆形UIImageView的自动布局,ios,swift,uiimageview,autolayout,Ios,Swift,Uiimageview,Autolayout,我有一个带有五个图像视图的tableViewCell。我希望五个图像视图具有相同的宽度和高度。如果我将每个图像视图的宽度和高度设置为60,并将它们放在单元格中水平和垂直居中的堆栈视图中,则图像视图在iPhone X上可以正常显示。但是,在iPhone SE上,图像太大 下面是它在X上的显示方式 以下是它在SE上的显示方式。您可以看到屏幕边缘的两个外部图像被切断 为了解决这个问题,我将自动布局更新为以下配置。我删除了锁定的60x60宽/高,而是添加了纵横比1:1。人们希望圆形图像视图能够根据不

我有一个带有五个图像视图的tableViewCell。我希望五个图像视图具有相同的宽度和高度。如果我将每个图像视图的宽度和高度设置为60,并将它们放在单元格中水平和垂直居中的堆栈视图中,则图像视图在iPhone X上可以正常显示。但是,在iPhone SE上,图像太大

下面是它在X上的显示方式

以下是它在SE上的显示方式。您可以看到屏幕边缘的两个外部图像被切断

为了解决这个问题,我将自动布局更新为以下配置。我删除了锁定的60x60宽/高,而是添加了纵横比1:1。人们希望圆形图像视图能够根据不同的屏幕大小进行缩放。

它在SE上运行良好,但在X上,imageView变得扭曲,不再是完美的圆形。下面是X在这些自动布局约束下的外观。这是我的代码,使imageView循环

imageView.layer.cornerRadius = imageView.bounds.size.width / 2
imageView.clipsToBounds = true

如果删除此代码,此ImageView将按比例显示。我不明白为什么我的ImageView没有显示完美的圆圈。有人知道如何更新我的约束和/或代码来实现这一点吗


设置
拐角半径的代码需要在通过自动布局设置视图大小后执行。确保发生这种情况的一种简单方法是将
UIImageView
子类化,并将用于设置
corneradius
的代码放置在
layoutSubviews()的覆盖中:


然后,只需在Identity Inspector中将
UIImageView
s的类更改为
RoundImageView
,它就会工作。

您更新了它们的大小,但它们的半径没有改变。您可以通过编程方式检查屏幕大小,并在此基础上更改照片的宽度和半径。
class RoundImageView: UIImageView {

    override func layoutSubviews() {
        super.layoutSubviews()
        self.layer.cornerRadius = self.bounds.size.width / 2
        self.clipsToBounds = true
    }

}