В настоящее время я реализую расширяющуюся временную шкалу.Когда я ущипну масштабирование на временной шкале, мне нужно, чтобы нарисованный текст оставался в тех же местах на UIView, на котором они нарисованы внутри UIScrollView, который обрабатывает масштабирование.(По сути, как булавки в GoogleMaps). Однако я не хочу увеличивать изображение по вертикали, поэтому я применяю преобразование путем переопределения:
- (void)setTransform:(CGAffineTransform)newValue;
{
newValue.d = 1.0;
[super setTransform:newValue];
}
. Это прекрасно работает, когда временная шкала зафиксирована вертикально и позволяет горизонтально расширяться.,Тем не менее, я рисую свои текстовые метки как таковые в методе, вызываемом во время setNeedsDisplay:
for (int i = 1; i < 11; i++)
{
CGRect newFrame = CGRectMake(i * (512.0/11.0) - (512.0/11.0/2.0), self.frame.size.height - 16.0, 512.0/11.0, 32.0);
NSString *label = [NSString stringWithFormat:@"%d", i+1];
[label drawInRect:newFrame withFont:[UIFont systemFontOfSize:14.0]];
}
Это рисует мой текст в правильном положении в представлении прокрутки и почти идеально работает.Тем не менее, из-за моего преобразования, чтобы сохранить масштабирование статическим по вертикали, текст расширяется по горизонтали, а не по вертикали, и поэтому ужасно растягивается.Я не могу заставить текст перерисовываться с правильным соотношением сторон.Использование UILabels работает, однако я собираюсь рендерить и манипулировать свыше 1000 таких меток, поэтому я бы предпочел рисовать статические изображения в drawRect или что-то подобное.
Я пытался изменить CGRect I 'рисование текста в (стоило того), а применение CGAffineTransformIdentity невозможно, потому что я уже преобразовываю представление, чтобы предотвратить его вертикальное масштабирование.Я также пытался рисовать текст в разных видах безрезультатно, и опять же, я бы предпочел не заполнять непристойное количество объектов, если я могу этого избежать.
Спасибо за любую помощь!