поздравления и приветы людей, я относительно новым для Objective C & программирования iPhone, так голые со мной, если я упускать из виду то, что очевидно ..сегментированные управления покалеченные во время первоначального переходного анимации
я создал простое приложение играть с различными анимациями перехода, настраивать пару сегментированных элементов управления и слайдер.
(Flip/Curl), (слева/справа) | (вверх/вниз), (EaseInOut/EaseIn/EaseOut/Linear)
Я создал класс контроллера вида, а контроллер супер-просмотра переключается между двумя экземплярами подкласса.
, как вы можете видеть из следующего изображения, при первом переключении на второй экземпляр, в то время как анимация происходит, сегментированные элементы управления искажены; я предположил бы, что у них не было времени Enuff рисовать себя полностью ..
http://img689.imageshack.us/img689/2320/mangledbuttonsduringtra.png
они прекрасно после того, как анимация будет сделано, и все последующие разы ..
если я указать cache:NO
в setAnimationTransition
это помогает, но по-прежнему существует своего рода прогрессивное раскрытие текста в сегментированных элементах управления; они по-прежнему не кажутся предварительно подготовленными или инициализированными должным образом. (и, конечно же, есть способ сделать это, кэшируя переход к представлению, поскольку в этом случае представление не меняется и должно быть кэшируемым.)
Я строю свой код на основе нескольких учебников из книги, поэтому я обновил didReceiveMemoryWarning
, чтобы установить инстантивные контроллеры представлений на нуль; когда я вызываю предупреждение о памяти в симуляторе, я предполагаю, что он очищает другой вид, и он действует как первый переход после загрузки, переключение вида появляется так же, как изображение выше.
Я думаю, Трудно включить код (извините, если он считается спамом), это в основном половина его, с аналогичным фрагментом, следующим за ним в заявлении else
, для случая присутствия второй стороны, перехода на 1-й ..:
- (IBAction)switchViews:(id)sender
{
[UIView beginAnimations:@"Transition Animation" context:nil];
if (self.sideBViewController.view.superview == nil) // sideA is active, sideB is coming
{
if (self.sideBViewController == nil)
{
SideAViewController *sBController =
[[SideAViewController alloc] initWithNibName:@"SideAViewController" bundle:nil];
self.sideBViewController = sBController;
[sBController release];
}
[UIView setAnimationDuration:sideAViewController.transitionDurationSlider.value];
if ([sideAViewController.transitionAnimation selectedSegmentIndex] == 0)
{
// flip: 0 == left, 1 == right
if ([sideAViewController.flipDirection selectedSegmentIndex] == 0)
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft
forView:self.view
cache:YES];
else
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
forView:self.view
cache:YES];
}
else
{
// curl: 0 == up, 1 == down
if ([sideAViewController.curlDirection selectedSegmentIndex] == 0)
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp
forView:self.view
cache:YES];
else
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown
forView:self.view
cache:YES];
}
if ([sideAViewController.animationCurve selectedSegmentIndex] == 0)
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
else if ([sideAViewController.animationCurve selectedSegmentIndex] == 1)
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
else if ([sideAViewController.animationCurve selectedSegmentIndex] == 2)
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
else if ([sideAViewController.animationCurve selectedSegmentIndex] == 3)
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[sideBViewController viewWillAppear:YES];
[sideAViewController viewWillDisappear:YES];
[sideAViewController.view removeFromSuperview];
[self.view insertSubview:sideBViewController.view atIndex:0];
[sideBViewController viewDidAppear:YES];
[sideAViewController viewDidDisappear:YES];
}
любые другие советы или указатели о написании хороший чистый код также ценится, я понимаю, я все еще есть много, чтобы узнать ..
поблагодарить у ур времени, - д