繁体   English   中英

如何在Swift中画一个圆圈UIView

[英]How to make a circle UIView in Swift

以下代码适用于 iPhone,但在 iPad 上,圆圈不是均匀的。

如何使视图在两个设备上看起来像一个圆圈?

let width:CGFloat = UIScreen.main.bounds.width*0.0533      
label.layer.masksToBounds = true
label.layer.cornerRadius = width/2

在此处输入图像描述

如果你想让你的 UIView 显示为一个圆圈,有几种方法可以做到这一点。

  • 将其角半径设置为宽度/高度的一半(最常见的方式)

如果您事先不知道视图的高度/宽度。 您可以简单地覆盖它的超视图类中的layoutSubviews()函数或视图控制器中的func viewDidLayoutSubviews()函数,并直接在那里设置角半径。

override func layoutSubviews() {
  super.layoutSubviews()
  label.layer.cornerRadius = label.frame.size.width/2
}

不要忘记将 UIView 图层的maskToBounds属性设置为 true。

  • 设置遮罩层

指定遮罩层的贝塞尔曲线路径。 每次视图更改其大小时,都必须更新图层的框架。

  • 舍入图像

如果您正在处理图像,您还可以考虑在 UIImageView 中显示图像之前对图像本身进行四舍五入 - 从性能角度来看,它可能比以前的选项更快。

要制作完整的圆形,您应该保持标签的高度和宽度相同。 使用此代码。

let width:CGFloat = UIScreen.main.bounds.width*0.0533  
label.frame = CGRect(0,0,width,width)    
label.layer.masksToBounds = true
label.layer.cornerRadius = width/2

发生这种情况的一个原因是,如果自动布局由于约束冲突而改变了标签的大小。

检查调试控制台以查看是否发生了这种情况,或者仅使用“调试视图层次结构”来查看视图的实际尺寸。 在此处输入图片说明

我发现要从 just.frame.size.height / 2 制作 uiview 圆圈,uiview 的宽度和高度应该相等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM