ios - هواوي - تحريك تغيير نص عنوان شريط التنقل




اخفاء شريط التنقل هواوي (3)

في بلدي التطبيق، ولدي وحدة تحكم عرض الصفحة التي تسمح للمستخدم انتقاد بين "أقسام" مختلفة من التطبيق، وفي الجزء العلوي في شريط التنقل أنا تغيير نص العنوان إلى القسم الجديد المستخدم تم تمريرها إلى عبر pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted: وهو حاليا على الفور تغيير نص العنوان عندما اكتمال الرسوم المتحركة. وأود أن تحسين هذا مع بعض الرسوم المتحركة، يتلاشى خفية داخل وخارج تأثير.

حاولت أولا تنفيذ [UIView animationWithDuration:...] لتحريك تغيير نص العنوان، ولكن لا الرسوم المتحركة وببساطة لا يزال التحديثات على الفور.

ثم تساءلت عما إذا كان من الممكن تحديث ألفا من عنوان شريط التنقل حيث يقوم المستخدم بالتمرير أفقيا استنادا إلى مدى تمريره، ليصل إلى 0 ألفا عندما يكون القسم التالي على وشك أن يأتي على الشاشة، ثم يمكنني على الفور تغيير النص في حين انها في 0 ثم تتلاشى بسرعة إلى 1 ألفا. ولكن أنا لا أرى طريقة على UIPageViewControllerDelegate أن يسمى عندما تم تحديث موقف التمرير.

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

هل من الممكن تنفيذ أي من الرسوم المتحركة المطلوبة؟


الحل هو إنشاء عنوان مخصص وتحريك موضعه باستخدام طريقة سكرولفيو المخفية لوحدة تحكم عرض الصفحة. وكما ذكر تشانغ، فإن العنوان المخصص هو ببساطة self.navigationItem.titleView = customNavTitleLabel;


إذا كنت تريد تحريك سلاسل العناوين المختلفة، فاستخدم ما يلي:

CATransition *fadeTextAnimation = [CATransition animation];
fadeTextAnimation.duration = 0.5;
fadeTextAnimation.type = kCATransitionFade;

[self.navigationController.navigationBar.layer addAnimation: fadeTextAnimation forKey: @"fadeText"];
self.navigationItem.title = "My new title";

يمكنك ضبط مدة وتعيين وظيفة توقيت لتناسب، بطبيعة الحال.

وهناك أيضا أنواع أخرى من الرسوم المتحركة التي قد تعمل في ظروف مختلفة (بفضلinorganik):

kCATransitionFade
kCATransitionMoveIn
kCATransitionPush
kCATransitionReveal

للراحة، حل آشلي ميلز في سويفت:

11/16/2016 تحديث ل سويفت 3 (بفضل n13)

let fadeTextAnimation = CATransition()
fadeTextAnimation.duration = 0.5
fadeTextAnimation.type = kCATransitionFade

navigationController?.navigationBar.layer.add(fadeTextAnimat‌​ion, forKey: "fadeText")
navigationItem.title = "test 123"

سويفت 2.x

let fadeTextAnimation = CATransition()
fadeTextAnimation.duration = 0.5
fadeTextAnimation.type = kCATransitionFade

navigationController?.navigationBar.layer.addAnimation(fadeTextAnimation, forKey: "fadeText")
navigationItem.title = "test 123"

أنا تلميح قبعتي لأشلي!





uiviewanimation