Лучшая практика: анимация изображения на экране iPhone

Если я хочу использовать Core Animation для постепенного появления и исчезновения представления, рекомендуется ли располагать UIView в том же NIB, что и представление, в которое он втягивается? Должен ли я создать представление в другом файле NIB и загрузить его оттуда? Я хочу анимировать три небольших представления для отображения одновременно при действии пользователя. Я хотел построить представления в IB. Здесь ищите ответ типа передовой практики.


person Coocoo4Cocoa    schedule 26.12.2008    source источник


Ответы (3)


Вы можете иметь три представления как отдельные UIView внутри одного XIB или размещать три представления внутри одного представления (в противном случае вам придется позиционировать их в коде). Установите их начальные альфа-значения на 0,0, а затем их постепенное исчезновение так же просто, как:

[UIView beginAnimations:@"fade" context:nil];
[UIView setAnimationDuration:1.0];
myViewOne.alpha = 1.0;
myViewTwo.alpha = 1.0;
myViewThree.alpha = 1.0;
[UIView commitAnimations];

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

person Arclite    schedule 27.12.2008

Apple рекомендует один XIB для каждой комбинации UIViewController / UIView. Это связано с тем, что если вы поместите несколько ViewCOntroller и View в один XIB, все они загружаются одновременно и используют память для всех элементов XIB, даже если на экране отображается только один.

Рекомендуемый метод - использовать MainWindow.xib, чтобы иметь прокси для каждого из xib (комбинаций UIViewController / UIView), которые вы планируете загружать.

Если вы просто загружаете подвиды, как указано выше, вы можете создать их в том же xib или построить их программно в viewDidLoad или viewWillAppear (который будет вызываться после загрузки xib с вашим «базовым» представлением.

person Corey Floyd    schedule 13.02.2009

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

person diclophis    schedule 26.12.2008
comment
Мне всегда казалось забавным, что Apple очень редко использовала IB в своем примере кода ... - person Harald Scheirich; 29.12.2008
comment
Каждый файл xib должен соответствовать одному подклассу UIViewController. Если вы управляете несколькими представлениями с помощью одного и того же UIViewController, все они должны находиться в одном xib. - person Lily Ballard; 05.01.2009