【问题标题】:How can my UIView.bounds be different when nothing has changed?当什么都没有改变时,我的 UIView.bounds 怎么会有所不同?
【发布时间】:2023-03-20 19:25:01
【问题描述】:

我正在尝试创建一个圆圈并围绕其中心旋转 (see my question about drawing this)

因此,在我的 ViewController 中,我有一个函数可以在我绘制的 UIView 中创建轮子 myWheel,它使用约束放置在视图的中心。这在 viweDidLoad() 中调用

在该函数中,我打印了一些值来检查

myWheel.center (270,270) 
myWheel.frame (0,0,540,540)
myWheel.bounds (0,0,540,540) 

最初我试图使用 .center 值在 myWheel 视图的中心绘制轮子,但是当我按下调用函数以围绕其中心旋转轮子的按钮时,它会给出不同的值。在附加到我的@IBAction 的函数中,它添加了旋转:

myWheel.center (161.5,161.5)
myWheel.frame (8,8,307,307) 
myWheel.bounds (0,0,307,307)

我怀疑创建过程中的值是在屏幕尺寸已知之前 - 但找不到任何谈论这个的文档。问题是如何在创建过程中确定我需要画圆的中心点?

【问题讨论】:

    标签: ios uiview


    【解决方案1】:

    viewDidLoad 期间,视图刚刚加载,其边界仍不会最终确定,您应该在viewWillappearviewDidAppearviewWillLayoutSubViews 方法中检查最终边界。

    但在您的情况下,我相信您添加为子视图的myWheel 视图具有其约束设置,因此视图的边界随着父视图的变化而变化。例如设置尾随空格,前导空格 w.r.t 父级。

    如果您希望在中心绘制圆,您可以为myWheel 视图设置中心 x、y 约束以及所需的高度、宽度约束。

    【讨论】:

    • 所以我使用了 viewDidAppear,现在我在两个地方都得到了相同的结果,谢谢现在唯一的问题是我添加的 CABasicAnimation 的锚点似乎略有不同!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    相关资源
    最近更新 更多