我正在构建一个绘制图表的原型 iPad 应用程序。我有以下视图层次结构:
UIView UIScrollView DiagramView : UIView TabBar NavigationBar
和一个 UIViewController 子类将所有这些结合在一起。
在第一次绘制图表之前,我计算图表的尺寸,并将 DiagramView 框架设置为该大小,以及滚动视图的内容大小。
-(void)recalculateBounds
{
[renderer diagram:diagram shouldDraw:NO];
SQXRect diagramRect = SQXMakeRect(0.0,0.0,[diagram bounds].size.width,[diagram bounds].size.height);
self.frame = diagramRect;
[(UIScrollView*)[self superview] setContentSize:diagramRect.size];
}
我应该透露帧被设置为大约 1500 x 3500,我知道这很荒谬。在我开始优化渲染代码之前,我只想关注应用程序的其他部分。
这很好用,除了传递给 drawRect 的矩形不是我设置的大小,而且我的绘图在底部被剪裁了。它接近我设置的尺寸,但宽度更大,高度更短。
另外值得注意的是,如果我强制框架比我知道的图表需要的大得多,那么 drawRect:rect 就足够大了,并且不会发生剪裁。当然,这让我想知道框架大小是否需要考虑其他一些屏幕空间,比如工具栏,但是我对文档的阅读告诉我框架位于超级视图坐标中,这将是滚动视图,所以我认为我不需要需要担心这样的事情。
知道是什么导致了这种差异吗?