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