【发布时间】:2012-07-14 01:41:53
【问题描述】:
我正在为setNeedsDisplay 苦苦挣扎。我认为它应该为调用它的视图触发drawRect: 的调用,如果它在视图的范围内,那么它下面的层次结构,但我发现情况并非如此。这是我的设置:
从应用程序委托中,我创建了一个大小为正方形的视图,基本上覆盖了整个屏幕空间。此视图称为TrollCalendarView。 TrollCalendarView 除了由指南针触发的旋转外,不会发生太多变化。
TrollCalendarView 有 7 个子视图,称为 PlatformView,旨在包含以 7 面排列的方式围绕 TrollCalendarView 的中心排列的 2D 绘图对象。因此,当 iPad 旋转时,这 7 个视图会旋转,因此它们始终与基本方向一致。
每个PlatformView 子视图都包含3 个名为Tower 的子视图。每个塔都包含在drawRect: 中实现的二维绘图对象。
所以,总而言之,我有 TrollCalendarView 和空的 drawRect:,以及子视图 PlatformView 和 Platformview -> 每个都有 drawRect 实现的 Tower。此外,Tower 位于 Platform 范围内,Platform 位于 TrollCalendarView 范围内。
在TrollCalendarView 中,我添加了一个滑动识别器。当我刷卡时,属性被更新,我打电话给[self setNeedsDisplay],但似乎什么也没发生。我在每个视图中将 NSLog 条目添加到 drawRect: 方法,并且只调用了 TrollCalendarView drawRect: 方法。具有讽刺意味的是,这是一个视图,其drawRect 方法将为空。
没有xib文件。
我需要做些什么来确保调用其他子视图中的drawRect 方法?是否有文档描述了可能影响这一点的所有细微差别?
【问题讨论】:
标签: objective-c subview drawrect setneedsdisplay