Если я хочу использовать Core Animation для постепенного появления и исчезновения представления, рекомендуется ли располагать UIView в том же NIB, что и представление, в которое он втягивается? Должен ли я создать представление в другом файле NIB и загрузить его оттуда? Я хочу анимировать три небольших представления для отображения одновременно при действии пользователя. Я хотел построить представления в IB. Здесь ищите ответ типа передовой практики.
Лучшая практика: анимация изображения на экране iPhone
Ответы (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, если вы планируете отображать их все вместе. Я обычно разбиваю вещи так, только если они являются частями отдельных «экранов», которые никогда не будут показаны вместе.
Apple рекомендует один XIB для каждой комбинации UIViewController / UIView. Это связано с тем, что если вы поместите несколько ViewCOntroller и View в один XIB, все они загружаются одновременно и используют память для всех элементов XIB, даже если на экране отображается только один.
Рекомендуемый метод - использовать MainWindow.xib, чтобы иметь прокси для каждого из xib (комбинаций UIViewController / UIView), которые вы планируете загружать.
Если вы просто загружаете подвиды, как указано выше, вы можете создать их в том же xib или построить их программно в viewDidLoad или viewWillAppear (который будет вызываться после загрузки xib с вашим «базовым» представлением.
Я думаю, что построитель интерфейса должен использоваться в максимально возможной степени ... поэтому я рекомендую, чтобы каждое представление было отдельным файлом xib ... помните, что вы можете построить иерархию классов, которые расширяются от UIViewController, если есть много перекрытия в функциональности между взгляды.