
sender.value(forKey: "view"), וממירים אותו ל-UIView.UIView.animate מסובבים את ה-view בזווית של CGFloat.pi / 4 כשפותחים, ובזווית אפס כשסוגרים.shouldOpen, כך שהכפתור נפתח ונסגר לסירוגין.height.constant בין 150 ל-0 יוצר פתיחה וסגירה של התפריט.repeatCount הוצאה משימוש ב-iOS 13, ולכן לא ממליצים עליה.self.view.layoutIfNeeded() בתוך הבלוק, כדי שה-layout יתעדכן כחלק מהאנימציה.הטקסט המלא של הדקות הראשונות בהרצאה «אנימציה ב-Xcode-Swift - חלק 4» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום וברוכים הבאים בסרטונים הקודמים ראינו סדרה ממש נחמדה של אנימציות ובכלל דברים שימושיים כמו Container View Controllers מה שאנחנו רוצים לעשות היום זה להמשיך באותו רעיון ולהציג אנימציות שימושיות ואיך לבצע אותן בואו נתחיל בזה שאנחנו רוצים לדעת לבצע אנימציות לבר בטון אייטמס וכדי לעשות את זה אנחנו צריכים תפריט אז אנחנו פותחים את האפליקציה שלנו מהשיעור
הקודם ואנחנו רוצים לייצר פה תפריט אני אלך פה לצד ימין לפינה עד ל-Embed in Navigation Controller וברגע שיש לנו Navigation Controller אז יש לנו את ה-Navigation Item ובתוכו אפשר להכניס כפתורים נכון?
אז בואו נעשה גם טייטל שיהיה Animations אנימאט פשוט ואנחנו רוצים להוסיף לפה כפתור אז נפתח את הפקדים ואנחנו נרצה לגרור בר בטון אייטם, נרשום בטון ונגרור מפה בר בטון אייטם שהוא יכול להיכנס לפה אנחנו נרצה לקחת את האייטם הלפולטי של אדג' שנראה כמו פלוס למשל,
השאלה איך עושים על הדבר הזה אנימציות, זה מסתבר לא הדבר הכי טריוויאלי בעולם ולכן רציתי להראות לכם. אז אנחנו נגרור אקשן, הצלחתי את האסיסטנט אדיטור, יש לנו כבר הרבה קוד שזה דבר טוב דווקא, אבל אולי רצוי לסדר אותו ולהוציא מפה חלק מהדברים למודולים נפרדים.
אני אגרור Action בצורה הבאה ואנחנו נשנה את זה ל-Action, נשנה את זה ל-Bar-Bottom-Item ובוא נניח נקרא לזה תעגל, אוקיי? כי זה כפתור פלוס אבל תכף נראה מה אני רוצה לעשות איתו באופן אישי. הייתי רוצה להיות מסוגל לעשות אני מציע ל-Bar-Bottom-Item, אתם רואים? נניח sender נקודה משהו אנימט אבל A זה לא View,
אוקיי? עכשיו, איך נניח אנחנו נגיע לפלוס? custom view זו לא תשובה נכונה, בסדר? והאמת היא שהוא לא נגיש לי באף צורה.
זאת בעצם הבעיה. אם אני רוצה לסובב את כל ה-view הזה בעצם, אז אולי אני יכול לעשות sender.transform? לא, רואים?
אז מה אנחנו כן יכולים לעשות? מסתבר, חברים, שכדי לקבל את ה-view מתוך ה-sender, אנחנו נאלצים פה להשתמש באיזשהו מנגנון די ישן שנקרא kvo, ואנחנו נעשה את זה בצורה הבאה:
סלנדר נקודה value for key, key נקרא view, ואנחנו נצטרך לעשות פה קאסטינג ל-u ה-view, ועכשיו יש לי view ביד, אוקיי? זה ה-view הזה של הפלוס בטון, ועליו אנחנו יכולים לעשות אנימציה, אז יש לנו כזה down true, האם תוראות לי down true? אני יכול להשתמש בו בעצם, אוקיי?
לא כדאי, כדי להגדיר עוד אחד, אז בוא נגיד var open, או should open אני אקרא לזה, ואני אשים פה true, אנחנו יכולים לעשות אנימציה ui view נקודה בוא נעשה כמו קודם let angle שווה אם צריך לפתוח אז ניקח פה cg float פאי חלקי ארבע אחרת ניקח פה זווית של אפס תכף אתם תראו את האנימציה
ותבינו לבד לא לדאוג לגבי הזוויות תכף נראה בדיוק מה זה אומר ui view animate with duration אפשר לעשות קפיצים כבר אתם מכירים נהדר אם ככה אני אקח פה משהו שאנחנו לא מכירים בסדר אנחנו מכירים את זה, נכון?
ספרינג אנחנו מכירים קומפלישן אנדלר אנחנו מכירים את הפשוט יותר יש פה את זה שזה מעניין, יש פה אופצ'נס, רואים? דיליי ואופצ'נס בואו ננסה להבין מה אפשר לעשות אולי עם האופצ'נס האלה אחר כך בינתיים אנחנו נעשה פה את האנימציה נגיד חצי שנייה
דיליי אני לא צריך, אני רוצה להתחיל מיד באופצ'נס אני אתחיל במערך ריק, אבל אחר כך אני אראה לכם מה זה אומר אני פותח בלוק אז enter כדי לפתוח בלוק וסלאס סלאש כדי סתם לייצר פרי הערה כאן אנחנו נקרא ל completion done וtab ועוד פעם סלאס סלאש כרגיל האנימציה תהיה לקחת את ה-v נקודת טרנספורם שווה
cgfine transform rotate סליחה בוא נעשה ככה rotate ואנחנו ניתן את הזווית אוקיי בואו נראה מה יצא לנו מצוין נריץ האמת היא בהקומפלישן אני לא בהכרח חייב את הקומפלישן, אוקיי?
אבל בוא נראה, אני מסובב, הדבר הזה מסתובב, לוחץ עוד פעם, לוחץ פעם נוספת, לא קורה כלום, אנחנו צריכים לסובב את הבוליאני, אז בוא נסובב את הבוליאני שלנו, אז should open שווה לנגייט, נכון?
שווה להפך למה שהוא היה שווה קודם, ועכשיו בואו נסתכל. אז אנחנו לוחצים, זה מסתובב, פעם נוספת נסגר, פעם נוספת נפתח, מגניב האמת היא הייתי רוצה קצת לקצר את הדבר הזה בסדר שיהיה יותר זריז הסיבוב עכשיו לגבי האופצ'יאנס בואו ננסה לראות איזה אופצ'יאנס יש לנו
יש לנו אופציה של אוטו רוורס אוקיי ויש לנו גם אופציה של ריפיט שתי האופציות האלה ביחד ריפיט אומרת ריפיט פור אבר דרך אגב ואוטו רוורס אומר אני רוצה לעשות רוורס בפעם הבאה שאני חוזר על האנימציה יחד שתי האופציות האלה עושות repeat forever למעשה.
אם אני אריץ את זה עכשיו, אני אוכל לראות שהפקד שלי מסתובב וחוזר, מסתובב וחוזר, בעצם בלי הפסקה. אני לא כל כך צריך את האופצ'יונס האלה.
דרך אגב, הייתה אופציה עד ממש לא מזמן של repeat count וכל מיני אופציות נוספות UIVU.set, repeat count וכל מיני דברים כאלה שאתם יכולים לראות כאן, אבל הם deprecated ב-iOS 13 ולכן אני ממש לא ממליץ ללכת לשם.
אם אתם רוצים לעשות קסטומיזציה מהסגנון הזה של רוורס ורפיט, אני כבר ממליץ לעשות אותם בעצמכם, בסדר? כלומר, אחרי איזשהו קאונט מסוים לעצור את האנימציה, ובכלל, האמת, אני מעדיף וממליץ גם לעשות את זה עם ה-API הבא שאני אראה לכם בשיעור הבא, שנקרא Property Animator,