Рисование в UIView перестает работать, если ширина вида становится больше 16600 - PullRequest
0 голосов
/ 28 ноября 2010

Я использую следующий код для построения графика в представлении (в методе drawRect):

CGContextBeginPath(context);
CGContextMoveToPoint(context, devicePoint.x, devicePoint.y);

for (index = 1; index < dataCount; index++) {
    devicePoint = [[deviceDataArray objectAtIndex:index] CGPointValue];
    CGContextAddLineToPoint(context, devicePoint.x, devicePoint.y);
}

CGContextSetLineJoin(context, kCGLineJoinRound);
CGContextStrokePath(context);

Работает, если view.bounds.size.width меньше примерно 16600. Но выше этого размера график останавливается

Я изменяю размер представления в зависимости от диапазона данных, которые будут нанесены на график.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2010

Возможно, вам лучше использовать CAShapeLayers для рисования, так как у них нет реальных пикселей, а только путь, который рисует аппаратное обеспечение.Тогда у вас может быть UIScrollView, который просто отображает части CAShapeLayers для рисования, в противном случае вы создаете огромное изображение с таким большим представлением, как у вас сейчас.

0 голосов
/ 28 ноября 2010

Это очень плохая идея сделать такую ​​огромную ширину для просмотра, вы должны нарисовать только то, что пользователь может видеть за один раз (или чуть больше) и использовать для этого представление нормального (экранного) размера. Для контроля того, где в данный момент находится пользователь, используйте UIScrollView.

...