سؤال

أنا أبحث عن طريقة UIViewAnimationTransitionCurlUp أو UIViewAnimationTransitionCurlDown الانتقال على اي فون ولكن بدلا من الأعلى إلى الأسفل من اليسار إلى اليمين (أو أعلى/أسفل في وضع أفقي).لقد رأيت هذا طلب العرود الإنترنت عدة مرات ولكن لا أحد sems للحصول على إجابة.ومع ذلك أشعر بأن هذا غير قابلة للتنفيذ.

لقد حاولت تغيير عرض تحويل و عرض.طبقة تحويل لكن ذلك لم يؤثر على عملية الانتقال.منذ الانتقال التغييرات عندما يكون الجهاز التغييرات التوجه أفترض هناك طريقة لخداع الجهاز استخدام المناظر الطبيعية انتقالية في وضع عمودي والعكس بالعكس ؟

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

المحلول 2

تمكنت فعلا من تحقيق هذا التأثير عن طريق تغيير اتجاه بلدي UIViewController.الشيء الغريب هو, كان لي تحكم nesten في واحدة أخرى عندما لم يكن العامل ، ولكن عندما أنا وضعت له كما الفوري تحكم الرأي ، عمل.

الكود هذا:

في UIViewController هذا هو العرض الرئيسي تحكم في بلدي التطبيق مندوب و يسمح فقط أفقي (كما ترون في الطريقة 2 أدناه) علي ما يلي:

-(void)goToPage:(int)page flipUp:(BOOL)flipUp {

     //do stuff...

     // start the animated transition
     [UIView beginAnimations:@"page transition" context:nil];
     [UIView setAnimationDuration:1.0];
     [UIView setAnimationTransition:flipUp ? UIViewAnimationTransitionCurlUp : UIViewAnimationTransitionCurlDown forView:self.view cache:YES];

     //insert your new subview
     //[self.view insertSubview:currentPage.view atIndex:self.view.subviews.count];

      // commit the transition animation
      [UIView commitAnimations];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
     return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

نصائح أخرى

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

NSView* parent = viewController.view; // the main view
NSView* containerView = [[[UIView alloc] initWithFrame:parent.bounds] autorelease];
containerView.transform = CGAffineTransformMakeRotation(<your angle here, should probably be M_PI_2 * some integer>);
[parent addSubview:containerView]; 

[UIView beginAnimations:nil context:nil];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:containerView cache:YES];
[containerView addSubview:view];
[UIView commitAnimations];

وأنا أيضا كافح مع هذا. للحصول على حليقة أن يأتي من اليمين أو اليسار يمكنك إنشاء عرض المتوسطة وتحويلها. لذا، دعونا نقول وجهة نظر كنت تنقل (MYVIEW) هو طفل من النافذة الرئيسية (parentView):

-parentView
-->myView

وسوف إدراج وجهة نظر وسيطة بين (القيام به بسهولة في واجهة البناء):

-parentView
-->containerView
--->myView

وبعد ذلك، استخدام التعليمات البرمجية التالية إلى الوجه الحاوية 90 درجة اليسار والرأي انتقلت 90 درجة اليمين:

containerView.transform = CGAffineTransformMakeRotation(-M_PI_2);
myView.transform = CGAffineTransformMakeRotation(M_PI_2);

وMYVIEW لا تزال تظهر تستقيم للمستخدم ولكن الانتقال يعتقدون انها تطبق على 90 درجة من اليسار.

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

  containerView.frame = CGRectMake(0.0, 0.0, 768.0, 1024.0);
  myWebView.frame = CGRectMake(0.0, 0.0, 768.0, 1024.0);

ويساعد هذا الأمل. وهو الأقرب يمكنك الحصول على UIViewAnimationTransitionCurlLeft وUIViewAnimationTransitionCurlRight.

حاولت حل fluXa على iOS5 (لذلك اضطررت لاستخدام [UIView العابرة......]) لكنه لم يعمل:حليقة لا يزال ذهبت لأعلى أو لأسفل.على ما يبدو الانتقال الآن لا تأخذ تحويل ترى بعين الاعتبار.حتى في حالة شخص آخر يريد أن يفعل نفس الخدعة على iOS5, الحل هو إضافة حاوية أخرى بين وتحريك الانتقال من هناك.

هنا هو بلدي رمز ، وهو محددة قليلا منذ أن كنت تريد حليقة 'حتى' إلى اليسار ، ولكن مع الزاوية السفلى الشباك.كما لو أنني تمزيق صفحة من كتاب المذكرة.

UIView* parent = self.view; // the main view
CGRect r = flipRectSize(parent.bounds);
UIView* containerView = [[UIView alloc] initWithFrame:r];
CGAffineTransform t = CGAffineTransformMakeRotation(-M_PI_2);
t = CGAffineTransformTranslate(t, -80, -80);
containerView.transform = CGAffineTransformScale(t, -1, 1);
[parent addSubview:containerView]; 

UIView* container2 = [[UIView alloc] initWithFrame:r];
[containerView addSubview:container2]; 

UIImageView* v = [[UIImageView alloc] initWithFrame:r];
v.image = [UIImage imageWithCGImage:contents.CGImage scale:contents.scale orientation:UIImageOrientationLeftMirrored];
[container2 addSubview:v];

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.001 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
    [UIView transitionWithView:container2
                      duration:DURATION_CURL_ANIMATION
                       options:UIViewAnimationOptionTransitionCurlUp
                    animations:^{
                        [v removeFromSuperview];
                    } completion:^(BOOL finished) {
                        if (completion) {
                            completion(finished);
                        }
                        [containerView removeFromSuperview];}];});

ملاحظات:

  1. يجب أن أعترف أن أفيني تحويل ترجمة (80,80) لا معنى له في ذهني ، ولكن من الضروري للحصول على اي فون, ربما لن تعمل على آي باد.
  2. flipSizeRect تقلب العرض والارتفاع مستطيل (كنت حصلت بالفعل هذا صحيح؟)
  3. على dispatch_after ضروري لأني وأضاف الحاوية ومن ثم ترغب في إزالة نظر من التسلسل الهرمي.إذا أترك الإرسال لا شيء ينعش.أعتقد أننا بحاجة أولا إلى اختيار تخطيط تمر قبل أن نتمكن من تحريك إزالة.

وأنا لا أعتقد أن هناك ما هو أبعد بكثير كتابة مخصص للرسوم المتحركة.

والأهم من ذلك ربما كنت لا ينبغي محاولة ذلك. حليقة صعودا وهبوطا حليقة هي جزء من قواعد اللغة واجهة المستخدم التي يقول المستخدم أن يتم عرض رفعوا أو اخماد على عرض موجودة. ومن المفترض أن يكون مثل مذكرة لزجة يتم اخماد ومن ثم إزالتها. من المرجح أن تفسر حليقة الصحيحة مثل شيء من هذا القبيل تمزيق صفحة من كتاب - A اليسار <>. وسوف يربك المستخدمين.

وعندما تجد نفسك تحاول أن تفعل شيئا في واجهة أن API القياسية لا يفعل بسهولة، يجب عليك أن تسأل نفسك ما إذا كان هذا الأسلوب الرواية سيتصل شيء مهم لمستخدم وعما إذا كان هو مماثل لقواعد اللغة واجهة القائمة. إذا لم يكن كذلك، ثم يجب أن لا يكلف نفسه عناء.

واجهات غير عادية لها عامل نجاح باهر الأولي ولكنها تؤدي إلى الإحباط والأخطاء في استخدام يوما بعد يوم. كما أنها يمكن أن تسبب أبل لرفض التطبيق الخاص بك.

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