سؤال

يرجى النظر في الكود أدناه، وأخبرني بالخطأ الذي أفعله.

أريد التنقل بين عرضين لواجهة المستخدم.

بطريقة ما، عندما أبتعد عن العرض الأولي، أحصل على العرض المقلوب، بدون رسوم متحركة.عندما أرجع للخلف، تظهر الرسوم المتحركة بشكل جيد.

يتم تشغيل التقلبات من الأزرار الموجودة على طرق العرض نفسها.

- (IBAction)showMoreInfo:(id)sender
{
    UIView *moreInfo = self.flipView;

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:2.0];
    [UIView setAnimationBeginsFromCurrentState:NO];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];

    UIView *parent = self.view.superview;
    [self.view removeFromSuperview];

    [parent addSubview:moreInfo];

    [UIView commitAnimations];

}



- (IBAction)showLessInfo:(id)sender
{
    UIView *lessInfo = self.view;

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:2.0];
    [UIView setAnimationBeginsFromCurrentState:NO];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.flipView cache:YES];

    UIView *parent = self.flipView.superview;
    [self.flipView removeFromSuperview];

    [parent addSubview:lessInfo];

    [UIView commitAnimations];

}
هل كانت مفيدة؟

المحلول

ربما يكون السبب في ذلك هو أنك لا تستخدم طريقة عرض الحاوية كطريقة عرض انتقالية.الرجوع إلى الوثائق على setAnimationTransition:forView:ذاكرة التخزين المؤقت:

إذا كنت تريد تغيير مظهر طريقة العرض أثناء الانتقال - على سبيل المثال، الانتقال من طريقة عرض إلى أخرى - فاستخدم طريقة عرض الحاوية، وهي مثيل لـ UIView، كما يلي:

  1. ابدأ كتلة الرسوم المتحركة.
  2. قم بتعيين الانتقال في عرض الحاوية.
  3. قم بإزالة العرض الفرعي من عرض الحاوية.
  4. أضف العرض الفرعي الجديد إلى عرض الحاوية.
  5. تنفيذ كتلة الرسوم المتحركة.

جرب استخدام self.view.superview في عرض انتقال الرسوم المتحركة لـ showMoreInfo:

السبب showLessInfo: تعمل الطريقة أنك تستخدم طريقة عرض الحاوية.

نصائح أخرى

ويمكن استخدام MainWindow الخاص بك (UIWindow) كطريقة عرض حاوية كما UIWindow ملازمة من UIView؟

وأيضا فون 3.0 قدم المعاملة الوجه من خلال طريقة presentModalViewController:

CustomViewController *vc = [[CustomViewController alloc]
    initWithNibName:@"CustomViewController" bundle:nil];

vc.delegate = self;

// The magic statement. This will flip from right to left.
// present the modal view controller then when you dismissModalViewController
// it will transition flip from left to right. Simple and elegant.
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

[self presentModalViewController:vc animated:YES];

[vc release];

وبعد دائرة الرقابة الداخلية 4.0، يمكنك الوجه بين وجهات النظر مع هذا:

[UIView transitionFromView:sourceView toView:destinationView duration:0.35f options:UIViewAnimationOptionTransitionFlipFromRight completion:^(BOOL finished) {
    NSLog(@"I just flipped!");
}];

وكما ذكر جيسون، ستحتاج أن يحدث هذا في وجهة نظر الحاوية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top