0

我正在尝试创建一个存储在笔尖中的自定义 UIView,以便我可以使用 Interface Builder 定位它。

我创建了一个名为 RippleView 的类,它扩展了 UIView。我想使用 Interface Builder 将此视图定位为子视图。为此,我将一个新视图拖到了 Interface Builder 中的现有视图中,并为其赋予了 RippleView 类标识。然后我将我的 RippleView 插座链接到我刚刚创建的视图。

在 RippleView 类中,我实现了 initWithCoder,它除了调用 [super initWithCoder...] 之外什么都不做。在 awakeFromNib 中,我继续初始化我的代码。

现在,由于某种原因,如果我尝试在 awakeFromNib 中检查 RippleView 的边界,我会得到荒谬的值(0 宽度和 1081171968 高度)。这些边界在drawRect中没有改变,所以我认为这不是视图未初始化的问题。我在 touchesMoved 事件处理程序中得到了类似的值。

当我以编程方式创建子视图(initWithFrame)时,我没有遇到任何问题。什么可能导致框架边界失控?

4

2 回答 2

2

解决了!该问题与代码无关。UIView 边界是浮点数,我将它们打印为整数。正是这样的事情将程序员与辍学者分开:p

于 2009-10-27T04:18:35.230 回答
0

你能发布你的 initWithCoder: 实现吗?如果你没有设置 self 的值,或者你拼错了 initWithCoder:,你可能会看到这些问题。您是否尝试过在 initWithCoder: 中设置断点以确保它被调用?

于 2009-07-14T20:06:06.417 回答