0

我在 UIView 中绘制了一个数据网格,在创建 UIView 时drawRect我不知道最终大小,因为列数和行数是动态的。当然,我可以在创建 UIView 之前进行计算,但这并没有什么意义,因为我还将在 UIView 子类中进行这些计算,而不必提取它。

那么我该如何处理呢?我是否使用非常大的框架进行初始化并在 drawRect 完成后对其进行调整?

我还将将此视图设置为 UIScrollView 的内容,以防它太大而无法在分配给它的区域中查看。

我要绘制的视图如下所示:定价网格

4

2 回答 2

0

也许其他人有另一种解决方案,但我认为在你的情况下我会覆盖 setFrame: 并调用 setNeedsDisplay 以便在你的框架更改后调用 drawRect 。您是否已经尝试过这种方法?

于 2012-04-03T21:12:15.440 回答
-1
  • 在您的视图中添加一个方法,根据其数据确定它应该有多大。这需要与drawRect:.
  • 在您的视图控制器中,当您设置视图时,调用该方法以获取该大小。
  • 然后将视图的边界和/或框架设置为该大小。
  • 并将滚动视图设置contentSize为该大小。

关键概念是:将“确定我的视图的东西有多大”和“绘制我的视图的东西”的想法分开。现在,您正在绘制时进行尺寸计算,但您需要能够更早地进行。

如果您想变得花哨,可以考虑layoutSubviews在视图的超级视图中进行覆盖——这将是检查视图所需大小是否已更改的好地方,然后更新视图的大小和滚动视图的contentSize. 但没有必要这样做才能开始。

于 2012-04-04T04:44:30.843 回答