Авторотация искажает повернутый вид в iPhone

#iphone #rotation #cgaffinetransform #affinetransform #distortion

#iPhone #поворот #cgaffinetransform #affinetransform #искажение

Вопрос:

Я использую шаблон на основе представления для создания своего приложения и возвращаю YES в shouldAutorotateToInterfaceOrientation для поддержки автоматического поворота. Затем я добавляю квадратный объект testView_ (с настройкой автоматического изменения размера по умолчанию) и поворачиваю его при инициализации:

 - (void)viewDidLoad {
[super viewDidLoad];
    testView_.transform = CGAffineTransformMakeRotation(0.1);
}
  

Теперь, всякий раз, когда я поворачиваю iPhone, testView_ будет искажен. В чем причина и как ее исправить? Ширина и высота testView_ изменяются после каждого поворота iPhone, даже если он не должен быть автоматически изменен (и это происходит только в том случае, если testView_ повернут изначально).

Ответ №1:

Ну, наконец, мое решение состоит в том, чтобы сделать

 testView_.transform = CGAffineTransformIdentity;
  

в методе willRotateToInterfaceOrientation затем повторите

 testView_.transform = CGAffineTransformMakeRotation(0.1);
  

в didRotateFromInterfaceOrientation. Это помогает устранить искажения.

Это сложнее, если есть также перевод, масштабирование… это сложно, но идея в этом есть.