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