Как инвертировать преобразование uiview?
Вопрос
Я использую библиотеку 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'