CGAffineTransformScale изменяется после поворота устройства
У меня есть мнение, что я выполняю преобразование на
originalTransform = self.appContainer.transform;
self.appContainer.transform = CGAffineTransformMakeScale(.8, .8);
Если я не поворачиваю устройство, я могу вернуть его обратно к оригиналу, используя
self.appContainer.transform = CGAffineTransformScale(originalTransform, 1, 1);
К сожалению, если я поверну устройство, матрица преобразования для вида будет изменена поворотом вида и нарушит исходный масштаб. Если я отменю шкалу после поворота, у меня останется UIView
не возвращаясь к своему первоначальному размеру.
Я уверен, что мне нужно сделать вычисления между исходной матрицей преобразования и новой, но я не уверен, как это сделать. Единственное, что мне удалось сделать, это вернуть шкалу обратно в 1 до поворота
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
self.appContainer.transform = CGAffineTransformScale(originalTransform, 1, 1);
}
А затем измените масштаб с помощью измененного преобразования после
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
self.appContainer.transform = CGAffineTransformMakeScale(.8, .8);
}
Это заставляет его работать так, как я ожидаю, но вместо того, чтобы вернуться к полноэкранному режиму, а затем вернуться к 0,8 масштабе, я бы хотел, чтобы он перешел от своего нового преобразования к правильному 0,8 масштабу.
2 ответа
Я думаю, что вы должны удалить все маски авторазмера, используя.....
[self.appContainer setAutoresizingMask:UIViewAutoresizingNone];
Если вы хотите вернуть его к оригиналу, попробуйте установить преобразование в CGAffineTransformIdentity.
self.appContainer.transform = CGAffineTransformIdentity;