加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 如何使用自动布局保持一个圆形的imageView轮?

发布时间:2020-12-15 02:00:53 所属栏目:百科 来源:网络整理
导读:如何将矩形图像视图转换为可以在自动布局中保持形状的圆形图像视图,而不设置宽度和高度限制?从而允许imageView定义它的大小,并且相对于其周围的对象,它们的大小越来越大,并且具有前导,尾部,顶部和底部约束。 有一天我问了一个类似的问题,但我认为这
如何将矩形图像视图转换为可以在自动布局中保持形状的圆形图像视图,而不设置宽度和高度限制?从而允许imageView定义它的大小,并且相对于其周围的对象,它们的大小越来越大,并且具有前导,尾部,顶部和底部约束。

有一天我问了一个类似的问题,但我认为这可能是一个更简洁的方式。非常感谢!

编辑

好的,我开始把它做得尽可能简单。我有一个名为“Cell”的视图和一个名为“dog”的UIImageView在单元格内,就是这样。我在控制台中没有“无法同时满足约束”,只有两个使用自动布局的简单视图。我仍然试图使用这个代码来绕过UIImageView:

profileImageView.layer.cornerRadius = profileImageView.frame.size.width / 2
profileImageView.clipsToBounds = true

这是单元格约束设置:

enter image description here

这是配置文件pic约束设置:

enter image description here

这里是没有代码的结果,没有四舍五入,但很好和平方:

enter image description here

这是代码循环的结果:

enter image description here

这对我来说没有意义,因为没有舍入代码,图像是正方形的,并且代码是菱形的。如果它是平方不应该是没有问题的圈子?

编辑2

当我删除底部约束并且添加一个相等高度为.637的乘数到超级视图时,会发生什么。

enter image description here

解决方法

不幸的是,您无法使用cornerRadius和autolayout来执行此操作 – CGLayer不受autolayout的影响,因此视图大小的任何更改都不会改变已设置的半径,因为您注意到该圆圈失去其形状。

您可以创建UIImageView的自定义子类并覆盖layoutSubviews,以便在每次图像视图的边界更改时设置cornerRadius。

编辑

一个例子可能是这样的:

class Foo: UIImageView {
    override func layoutSubviews() {
        super.layoutSubviews()

        let radius: CGFloat = self.bounds.size.width / 2.0

        self.layer.cornerRadius = radius
    }
}

显然,你必须限制Foobar实例的宽度与高度相同(以保持一个圆圈)。您可能还想将Foobar实例的contentMode设置为UIViewContentMode.ScaleAspectFill,以便它知道如何绘制图像(这意味着图像可能被裁剪)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读