Вопрос

Я использую библиотеку Core-Plot, чтобы нарисовать стержень на приложении для iPhone, и возникает проблема, когда я пытаюсь добавить метку или некоторые другие представления на график,

На самом деле добавленное я просмотр нарисован вертикально инвертировать как это ........

Код похож

UILabel *lbl= [[UILabel alloc] initWithFrame:CGRectMake(250, 90, 70, 25)];
    [lbl setBackgroundColor:[UIColor redColor]];
    [lbl setText:@"HELLO"];
    [self.view addSubview:lbl];
    [lbl release];

Я не осмелюсь играть с библиотекой Core-Plot.

Так есть ли другой способ сделать это правильно? Должен ли я сделать преобразование, прежде чем добавить представления?

Если это решение, то это будет дорого, потому что я должен добавить более одного подвеса.

Надеюсь, что мой вопрос ясен всем.

Это было полезно?

Решение

Ну, похоже, что представление с основным участком инвертируется с использованием cgaffineTransform. Ваше мнение, вероятно, наследует инверсию от его надзора. На самом деле довольно просто сделать,

lbl.transform = CGAffineTransformMakeScale(1,-1);

Должен сделать свое дело. Если вам нужно сделать это много раз, возможно, упростите это с чем -то вроде,

CGAffineTransform verticalFlip = CGAffineTransformMakeScale(1,-1);
lbl.transform = verticalFlip;
otherLbl.transform = verticalFlip;

так далее...

Флип оси x будет CGAffineTransformMakeScale(-1,1);

Другие советы

Чтобы не догадаться фактическими значениями преобразования, которые вы можете использовать CGAffineTransformInvert Функция:

lbl.transform = CGAffineTransformInvert(self.view.transform);

Если мы хотим преобразовать слой, который представляет собой трехмерную модель, вам нужно справиться с ним следующим образом,

Swift 5:

// To inverse the graph vertically
annotationGraph.transform = CATransform3DMakeAffineTransform(CGAffineTransform(scaleX: 1, y: -1))

В противном случае вы бы получили это,

Не удается присвоить значение типа 'cgaffineTransform' type 'Catransform3d'

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top