我在 UIView 中绘制了一个数据网格,在创建 UIView 时drawRect
我不知道最终大小,因为列数和行数是动态的。当然,我可以在创建 UIView 之前进行计算,但这并没有什么意义,因为我还将在 UIView 子类中进行这些计算,而不必提取它。
那么我该如何处理呢?我是否使用非常大的框架进行初始化并在 drawRect 完成后对其进行调整?
我还将将此视图设置为 UIScrollView 的内容,以防它太大而无法在分配给它的区域中查看。
我要绘制的视图如下所示:
我在 UIView 中绘制了一个数据网格,在创建 UIView 时drawRect
我不知道最终大小,因为列数和行数是动态的。当然,我可以在创建 UIView 之前进行计算,但这并没有什么意义,因为我还将在 UIView 子类中进行这些计算,而不必提取它。
那么我该如何处理呢?我是否使用非常大的框架进行初始化并在 drawRect 完成后对其进行调整?
我还将将此视图设置为 UIScrollView 的内容,以防它太大而无法在分配给它的区域中查看。
我要绘制的视图如下所示:
也许其他人有另一种解决方案,但我认为在你的情况下我会覆盖 setFrame: 并调用 setNeedsDisplay 以便在你的框架更改后调用 drawRect 。您是否已经尝试过这种方法?
drawRect:
.contentSize
为该大小。关键概念是:将“确定我的视图的东西有多大”和“绘制我的视图的东西”的想法分开。现在,您正在绘制时进行尺寸计算,但您需要能够更早地进行。
如果您想变得花哨,可以考虑layoutSubviews
在视图的超级视图中进行覆盖——这将是检查视图所需大小是否已更改的好地方,然后更新视图的大小和滚动视图的contentSize
. 但没有必要这样做才能开始。