Только первый UIView добавленное представление addSubview показывает корректную ориентацию

Не уверенный, если можно сделать это с механиком, но если Вы создаете расширение тогда, можно использовать сервис наблюдателя и http-on-examine-response наблюдателя.

7
задан Brian Underwood 28 September 2009 в 00:13
поделиться

4 ответа

У меня была аналогичная проблема . Не знаю, почему. Но обходной путь состоял в том, чтобы вызывать это для каждого представления после первого:

[PlanningController.view setFrame: CGRectMake (0, 0, 480, 300)];

и до -addView. Мне любопытно, поможет ли это вам. Если я не единственный, у кого есть эта проблема и этот обходной путь, то, возможно, есть причина.

0
ответ дан 7 December 2019 в 14:34
поделиться

Решил ту же проблему и, очевидно, добавил subviews в UIWindow работает не так, как я ожидал. Мне удалось решить проблему после добавления «пустышки» UIViewController , которая является ЕДИНСТВЕННЫМ подвидом в UIWindow. После добавления этого, он отлично работает для добавления нескольких подвидов к фиктивному контроллеру, все с правильной ориентацией.

Таким образом, единственный код в классе «фиктивного» контроллера - это функция « shouldAutorotateToInterfaceOrientation » . Это также должно совпадать с той же функцией во всех других подпредставлениях.

Надеюсь, это поможет.

4
ответ дан 7 December 2019 в 14:34
поделиться

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

[window addSubview:firstController.view];
[window addSubview:secondController.view];
CGAffineTransform rotate = CGAffineTransformMakeRotation(M_PI/2.0);
[backgroundViewController.view setTransform:rotate];
CGRect contentRect = CGRectMake(0, 0, 1024, 768); 
backgroundViewController.view.bounds = contentRect; 
[backgroundViewController.view setCenter:CGPointMake(768/2, 1024/2)];

0
ответ дан 7 December 2019 в 14:34
поделиться

Кажется, у меня есть решение, которое, похоже, работает. Добавьте вид, а затем сразу же удалите его, повторите для каждого вида, а затем добавьте все три. Вот так:

[window addSubview:welcomeController.view];
[welcomeController.view removeFromSuperview];
[window addSubview:goalController.view];
[goalController.view removeFromSuperview];
[window addSubview:planningController.view];
[planningController.view removeFromSuperview];

[window addSubview:welcomeController.view];
[window addSubview:goalController.view];
[window addSubview:planningController.view];

Кажется, это работает, по крайней мере, в симуляторе.

0
ответ дан 7 December 2019 в 14:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: