【问题标题】:Why doesn't cornerRadius.width/2 give me a perfect circle?为什么cornerRadius.width/2 不给我一个完美的圆?
【发布时间】:2018-09-29 08:09:20
【问题描述】:

我正在尝试使用此代码从方形视图创建一个圆圈:

self.situationerCircle.layer.cornerRadius = self.situationerCircle.frame.size.width/2.0
situationerCircle.clipsToBounds = true

但我仍然没有得到一个完美的圆。我很确定这与我的约束有关,因为我使用这些约束进行了测试循环:

使用此代码:

testc.layer.cornerRadius = self.testc.frame.size.width/2
testc.clipsToBounds = true

这非常有效。然而,坏圈的约束如下所示:

原因是因为我想让它的大小与其容器成比例地增长,同时保持相同的 1:1 比例。但结果是一个半圆形,具有微妙但可见的边缘。任何想法如何解决这个问题?

【问题讨论】:

  • 我猜是因为您根据width 应用cornerRadius 太快了。这意味着当你这样做时,width 它还不是最后一个。在didLayoutSubview() 中进行操作。您可以通过打印您所做的宽度以及它在didLayoutSubview() 中的呈现方式来检查它。
  • 好人,成功了!非常感谢! :)

标签: swift geometry cornerradius


【解决方案1】:

如果您尝试在viewDidLoad() 中执行此代码,则可能会发生这种情况。 viewDidAppear() 可以工作,但如果您在单元格内尝试,则有一个名为 awakeFromNib() 的方法,您可以在其中定义对象。添加它并在那里替换您的代码。我同意 Larme 的回答,您可以致电 layoutIfNeeded() 刷新视图并强制完成我认为的完美圆圈。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多