2010-01-14 5 views
0

Приложение iphone, которое я развиваю в ландшафтном режиме, серьезно раскалывается. Я поставил его в портрете для сравнения, и, похоже, он выглядит намного более плавным в этой ориентации. Я не делаю то, что, по моему мнению, является процессом интенсивным: отображение карты, некоторые кнопки, некоторые метки и некоторые кварцевые рисунки, но некоторые основные кварцевые анимации серьезно замедляются.iphone пейзаж режим медленный

Кто-нибудь знает, насколько ландшафтный режим просто ужасен по сравнению с портретом, и/или если да, если есть лучшие способы создания ландшафтного приложения? Я просто использую повернутое с корнем представление, преобразованное на 90 градусов, и присоединяю к нему все мои представления.

Спасибо.

+0

Можете ли вы запустить Инструменты и использовать инструмент Sampler, чтобы узнать, где потрачено время? Профилирование кода - лучший способ узнать, где все происходит медленно. – lucius

ответ

2

Не должно быть никакой реальной разницы между ориентацией пейзажа и портрета, когда дело доходит до производительности рендеринга. Используете ли вы преобразование для поворота основного вида на 90 градусов? Что касается iPhone OS 2.1, я полагаю, вам больше не нужно вручную применять преобразование к своему основному виду, чтобы заставить его начать в ландшафте. Все, что я должен был сделать, чтобы заставить альбомную ориентацию было поместить этот метод делегата в моем приложении делегат:

- (void)application:(UIApplication *)application willChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientation duration:(NSTimeInterval)duration; 
{ 
    // This prevents the view from autorotating to portrait in the simulator 
    if ((newStatusBarOrientation == UIInterfaceOrientationPortrait) || (newStatusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) 
     [application setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO]; 
} 

и следующее, на моем взгляде корневого контроллере:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (interfaceOrientation == UIInterfaceOrientationLandscapeRight)); 
} 
+0

Я хотел бы попробовать это, но у вас есть вопрос. Я не использую конструктор интерфейса, поэтому у меня нет контроллера корневого представления, по крайней мере, я не знаю. Должен ли я добавлять этот второй фрагмент к чему-то конкретному? У меня есть делегат приложения, но нет контроллера корневого представления. – Joey

+0

Каково первое представление, которое вы создаете подвид окна приложения? Контроллер для этого должен быть контроллером корневого представления, на который я ссылаюсь здесь. –

+0

, что первый подкласс не имеет контроллера, насколько я могу судить, или, может быть, я запутался? Есть ли способ ссылаться на его контроллер из представления, если он определенно имеет один? Все виды обращаются к родительскому контроллеру в некотором роде абсолютно или, если нет, есть простой способ назначить представление в виде представления контроллера представления просто путем его выделения и установки вида как viewController.view или что контроллеру необходимо каким-то образом подключиться к приложению? – Joey

1

Возможно, вы выполняете некоторые деления, которые приводят к нецелым позициям пикселей (например, 0,76). У меня были некоторые проблемы с производительностью, когда у меня были нецелые позиции пикселей. (Хотя я не совсем уверен, что они были связаны. Но, может быть, это вам поможет)

0

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