
הטקסט המלא של הדקות הראשונות בהרצאה «הוספת אנימציה ל-Dialog» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו רוצים בסרטון הנוכחי רק להוסיף קצת אנימציות לפרויקט הקודם שלנו, לדיאלוג אי אפשר לעזוב את זה ככה, נכון? אנחנו רוצים שהדיאלוג הזה נגיד ינחת פנימה באיזושהי צורה וגם כשאנחנו משחררים אותו הוא ייעלם קצת בהדרגה אנחנו לא ניכנס לעומק לאנימציות בסרטון הנוכחי, יהיה לנו על זה סרטון ככה מוקדש אבל אנחנו רוצים לכבד את הפרויקט שלנו עם
האנימציות שמגיעות לו, עם הכבוד שמגיע לו המינימלי אז מה אנחנו נעשה? נרצה פה בשואו דיאלוג נניח להציג את הדיאלוג באנימציה בסיסית כדי לעשות את זה לאנימציות יש ככה כלל יסוד צריך להגדיר תנאי פתיחה סטארטינג קונדישיאנס למשל אני רוצה שהדיאלוג יתחיל מחוץ למסך וכדי לעשות את זה אז הדיאלוג סנטר יהיה פשוט איזשהו סי ג'י פוינט
שהוא לא סנטר אז אנחנו נקבע נניח x וy כלשהם לגבי ציר X, אין לי שום בעיה שהוא יהיה באמצע. אז ה-self.view.center נשמע מצוין, כמו קודם כזה.
לגבי Y לעומת זאת, אז אנחנו רוצים להעיף אותו מחוץ למסך. אז אנחנו רוצים שהוא יהיה ב-center, סליחה, center X. עכשיו, לגבי Y, אני רוצה להעיף אותו מחוץ למסך, אז בואו נגיד שהוא יהיה ב-self.view.frame נניח, נקודה-height.
כלומר, בכל הגובה של המסך, במינוס, אוקיי? אז מינוס הדבר הזה. עכשיו, אתם לא חייבים לרשום פה סלף, אלא אם כן זה נמצא בבלוק, ועוד מעט זה ייכנס לבלוק, אז אני כבר רשמתי פה סלף, עוד מעט נראה מה הכוונה.
אז אלה תנאי הפתיחה. אוקיי, עכשיו, זה בעצם התנאי סיור. אז אם אני פשוט אריץ את השורת סיור באנימציה, כדי לעשות את זה באנימציה, אז אנחנו משתמשים בפעולה הבאה, ui-view.animate.
זאת בעצם פעולה סטטית על המחלקה ui-view, והפעולה היא נקראת U of U אנימט וויו דיוריישן אז הדיוריישן יהיה איזשהו זמן לאנימציה, נגיד 0.4 שניות.
האנימציות זה פשוט בלוק של דברים שאני עושה פה קוראים באנימציה, שינויי תכונה קוראים באנימציה. תכף אנחנו נרשום פה קוד. ולגבי קומפלישן אנחנו לא צריכים הפעם אז אני מוחק, הרבה פעמים אנחנו מוחקים את הקומפלישן.
אוקיי, אז איזה אנימציות אנחנו רוצים? בעצם את זה, אני רוצה שהוא יגיע לסנטר באנימציה. יפה מאוד, אנימציה מאוד מאוד לא מסובכת, סך הכל UIVU אנימט וויב דיוריישן, והוא צועק עליי פה, אומר לי אתה לא יכול להתייחס ל-view הזה, אלא אם כן אתה כותב self.vue
בגלל שדיאלוגים בעצם, סליחה, ש-closures תופסים רפרנס ל-self, ל-view קונטרולר הנוכחי, ויש פה אזהרה שמא יהיה פה איזשהו ריטיין סייקל שאנחנו רוצים למנוע אותו.
במקרה שלנו אני לא מודאג לגבי העניין, אבל אנחנו נלמד, יהיה לנו סרטון מוקדש לנושא הזה של ריטיין ווויק רפרנסס, אז תצפו בסרטון הזה. אז יש לי פה אנימציה, בואו נראה איך היא נראית.
בואו נראה, אני לוחץ, שור דיאלוג, הופה, פעם זה מגיע מלמעלה באנימציה, קול. דרך אגב, אתם יכולים כמובן לשחק פה עם הסנטר, ואתם לא רק חייבים לשחק רק עם הסנטר, אתם יכולים להגדיר דברים כמו הווידף של הדיאלוג ויו וההייט של הדיאלוג ויו.
כלומר, dialogue view.frame.height dialogue view.frame.width וכך הלאה, כדי להגיע פה לאפקטים יותר נחמדים ויותר מרשימים. מה שכן, אני רוצה לטפל גם באופן בסיסי ביציאה של הפקד שלנו.
אז היציאה מתבצעת כאן, בעצם לא פה, סליחה. היציאה מתבצעת בתת-שס ביגן, נכון? כאן כשאנחנו מסתירים אז בעצם אנחנו לא רק רוצים להוציא את ה-view אלא אנחנו רוצים לעשות את זה באנימציה.
אני אשתמש עוד פעם בקוד שהיה קודם. נעשה ככה, מחקתי פה שורה, ראיתם? יש פה את ה-dialog-view-remove, מחקתי אותה. אני אארגן פה אנימציה UIView.animate with Duration and Completion.
עכשיו ה-Duration עוד פעם 0.4, אנימציות זה בלוק אז אני עושה Enter ואני אכתוב פה עוד מעט את הקוד קומפלישן הפעם, אני לא רוצה למחוק אותו, אז הקומפלישן הפעם זה בלוק, אני עושה Enter, וסוף סוף אנחנו רואים שימוש בקומפלישן בלוק.
הבוליאני הזה, בוא נקרא לו done, אין לנו שימוש בבוליאני, ופה יש לי קוד שקורא מתי שהנימצא מסתיימת, code that runs when the animation is over,