下面的代码可以在iPhone上运行,但在iPad上,圆不是均匀的圆形。如何使视图在两个设备上看起来都像圆形?
let width:CGFloat = UIScreen.main.bounds.width*0.0533 label.layer.masksToBounds = true label.layer.cornerRadius = width/2
xqkwcwgp1#
如果您希望您的UIView显示为圆形,有几种方法可以实现这一点。
*将其 * 拐角半径 * 设置为宽度/高度的一半(最常用的方法)
如果你事先不知道视图的高度/宽度,你可以简单地覆盖超级视图类中的layoutSubviews()函数或视图控制器中的func viewDidLayoutSubviews()函数,直接在那里设置圆角半径。
layoutSubviews()
func viewDidLayoutSubviews()
override func layoutSubviews() { super.layoutSubviews() label.layer.cornerRadius = label.frame.size.width/2 }
不要忘记将UIView层的 masksToBounds 属性设置为true。
*设置遮罩层
指定遮罩层的贝塞尔曲线路径。每次视图改变大小时,必须更新遮罩层的框架。
*圆形图像
如果您正在处理图像,您还可以考虑在UIImageView中显示图像之前对图像本身进行舍入-从性能方面来看,这可能比前面的选项更快。
disbfnqx2#
要做一个完整的圆,你应该保持你的标签的高度和宽度相同。使用这个代码。
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
pinkon5k3#
发生这种情况的一个原因是自动布局由于约束冲突而更改标签的大小。检查调试控制台,看看是否会发生这种情况,或者使用“Debug View Hierarchy”查看视图的实际尺寸。
2mbi3lxu4#
我发现要使uiview圆从just .frame.size.height / 2中分离出来,uiview的宽度和高度应该相等。
4条答案
按热度按时间xqkwcwgp1#
如果您希望您的UIView显示为圆形,有几种方法可以实现这一点。
*将其 * 拐角半径 * 设置为宽度/高度的一半(最常用的方法)
如果你事先不知道视图的高度/宽度,你可以简单地覆盖超级视图类中的
layoutSubviews()
函数或视图控制器中的func viewDidLayoutSubviews()
函数,直接在那里设置圆角半径。不要忘记将UIView层的 masksToBounds 属性设置为true。
*设置遮罩层
指定遮罩层的贝塞尔曲线路径。每次视图改变大小时,必须更新遮罩层的框架。
*圆形图像
如果您正在处理图像,您还可以考虑在UIImageView中显示图像之前对图像本身进行舍入-从性能方面来看,这可能比前面的选项更快。
disbfnqx2#
要做一个完整的圆,你应该保持你的标签的高度和宽度相同。使用这个代码。
pinkon5k3#
发生这种情况的一个原因是自动布局由于约束冲突而更改标签的大小。
检查调试控制台,看看是否会发生这种情况,或者使用“Debug View Hierarchy”查看视图的实际尺寸。
2mbi3lxu4#
我发现要使uiview圆从just .frame.size.height / 2中分离出来,uiview的宽度和高度应该相等。