Я создаю прототип приложения для iPad, которое рисует диаграммы. У меня есть следующая иерархия представлений:
UIView UIScrollView DiagramView: Панель навигации UIView TabBar
И подкласс 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 будет достаточно большим, и не произойдет отсечения. Конечно, это заставляет меня задаться вопросом, должен ли размер кадра учитывать какую-то другую экранную недвижимость, такую как панели инструментов, но мое чтение документов говорит мне, что кадр находится в координатах супервизора, которые были бы прокруткой, поэтому я считаю, что я не должен нужно беспокоиться о таких вещах.
Любая идея, что вызывает это несоответствие?