صفحه لانچ در Xcode – راهنمای جامع


صفحههای لانچ در موارد آغاز به کار اپلیکیشن ظاهر میشوند و این حس را به کاربر میدهند که اپلیکیشن سریع و واکنشگرا است. پس از آن که اپلیکیشن بارگذاری شد، صفحه لانچ در Xcode با صفحه نخست اپلیکیشن تعویض میشود و کاربر میتواند از اپلیکیشن استفاده کند.
Xcode به صورت پیشفرض یک استوریبورد ایجاد میکند که میتوانید برای راهاندازی صفحه بارگذاری استفاده کنید. با این که این روند در اغلب موارد به درستی کار میکند، اما گزینههای جدیدی در Xcode 12 و iO 14 معرفی شدهاند. پیش از آن که وارد این مبحث بشویم، به بررسی روش پیادهسازی قدیمی میپردازیم.
تاریخچه صفحههای لانچ
صفحههای لانچ تاریخچهای طولانی دارند. تا نسخه Xcode 6 تنها گزینه ما عرضه تصاویر استاتیک به صورت یک asset catalog بود. البته این حالت در هر حال بهتر از وضعیت قبلی بود، که میبایست نام فایلها را برای تصاویر تعیین میکردیم تا در زمان لانچ اپلیکیشن نمایش یابند.
در iOS 8 که به همراه Xcode 6 عرضه شد، امکان تعویض تصاویر استاتیک با یک فایل استوریبورد وجود داشت. این یک روش ساده و بهینه برای تعریف صفحههای بارگذاری بود، اما گزینهها همچنان محدود بودند. صفحههای لانچ به مقدار زیای کش میشدند و تعویض دینامیک در عمل ناممکن بود. با این حال با استفاده از برچسبها، نماهای تصویر، و دیگر عناصر اینترفیس الزام به باز کردن تصویر در یک اپلیکیشن ویرایش تصاویر برای اکسپورت کردن آنها در همه ابعاد مناسب را رفع کرده بود.
Xcode 12 و iOS 14 صفحههای لانچ را به مقدار زیادی بهبود بخشیدهاند که در ادامه این راهنما توضیح خواهیم داد.
راهنماهایی در مورد شیوه استفاده از صفحههای لانچ
پیش از آن که به بررسی شیوه و زمان استفاده از صفحههای لانچ بپردازیم، بهتر است در مورد هدف استفاده از آنها توضیحاتی ارائه کنیم. استفاده نادرست از صفحههای لانچ کار دشواری است، اما بهینه ساختن آنها کار آسانی محسوب میشود.
زمانی که میخواهید یک صفحه لانچ را پیادهسازی کنید، همواره پیشنهاد میکنیم از راهنماهای اینترفیس انسانی (+) اپل بازدید کنید. این راهنماها، جهت و مسیر آغاز صحیح را برای القای حس مناسب کاربران در بدو امر به شما نشان میدهند. درک موارد زیر از اهمیت بالایی برخوردار است:
- استفاده از متن توصیه نمیشود، زیرا امکان استفاده از «بومیسازی» (Localization) وجود ندارد.
- هر گونه تصاویری که استفاده میشوند، باید به درستی برای اندازههای مختلف صفحهها مقیاسبندی شوند.
- این صفحه باید تا حد امکان به صفحه نخست اپلیکیشن شما نزدیک باشد.
آخرین نکته فهرست فوق، جهت حرکت را نشان میدهد. هر چه صفحه اسپلش به صفحه نخست اپلیکیشن نزدیک باشد، تأثیر اولیه اپلیکیشن در نظر بیننده هموارتر خواهد بود.
پاک کردن کش در زمان توسعه
در زمانی که شروع پیادهسازی عملی صفحه لانچ بکنیم، بیشک با مشکلاتی در مورد عدم بهروزرسانی صفحه لانچ مواجه خواهید شد. iOS نماهای بارگذاری شما را به صورت یک تصویر کش میکند تا عملکرد بهبود یابد. از این رو چند نکته در مورد روش پاک کردن کش مطرح میکنیم تا مطمئن شوید که صفحه بهروزشدهای را میبینید و دیگر ساعتها وقت خود را صرف یافتن خطاهایی نکنید که از اساس وجود ندارند.
در اغلب موارد در زمان تست کردن روی iOS 14 صفحه به درستی بهروزرسانی میشود. با این حال، در مواردی ممکن است چنین نشود. در این موارد میتوانید از رویکردهای زیر استفاده کنید:
- پوشه بیلد خود را با مراجعه به مسیر Product ➞ Clean Build Folder پاک کنید.
- اپلیکیشن را از شبیهساز حذف کرده و دوباره نصب کنید.
به عنوان آخرین گزینه میتوانید شبیهساز را نیز ریست کنید. با این حال، این کار زمانگیر است و باعث کاهش بهرهوری میشود. یک ترفند دیگر نیز وجود دارد که روی iSO 14+ تست نشده است، اما ممکن است کار کند:
شما میتوانید این متد را از متد didFinishLaunchingWithOptions فراخانی کنید، اما باید مطمئن شوید که در طی توسعه تنها این قطعه کد را فعال کردهاید.
افزودن sleep برای ایجاد تأخیر در صفحه لانچ اپلیکیشن
در طی زمان توسعه صفحه لانچ، بهتر است یک تأخیر به آن اضافه کنید تا زمان نمایش آن افزایش یابد و بتوانید به دقت پیادهسازی طراحی خود را بررسی کنید. اگر اپلیکیشن شما به سرعت لانچ میشود، صفحه لانچ ممکن است تنها کسری از ثانیه نمایش یابد.
ما در زمان توسعه از کد زیر استفاده میکنیم و از این رو میتوانیم دو ثانیه برای تأیید پیادهسازی خود زمان داشته باشیم:
گزینههای پیادهسازی صفحههای لانچ
اکنون که در مورد صفحههای لانچ اطلاعات مناسب به دست آوردهاید، نوبت آن فرا رسیده است که گزینههای موجود در Xcode 12 و بالاتر را بررسی کنیم. در این نسخهها دو روش برای پیادهسازی صفحههای لانچ وجود دارند:
- استفاده از استوریبورد (گزینه پیشفرض).
- با استفاده از پیکربندی plist میتوانیم یک تصویر تعیین کنیم که در آن باید به تصویر لانچ، به تقاطعهای ناحیه امن، رنگ پسزمینه، پدیداری نوار ناوبری، پدیداری، نوار زبانهها، پدیداری نوار ابزار و پیکربندی صفحه لانچ برای هر اسکیمای URL توجه کنیم.
فهرست گزینههای پیکربندی plist در Xcode به تازگی عرضه شده است و به ما امکان میدهد که یک صفحه لانچ را بدون نیاز به استفاده از استوریبوردها تنظیم کنیم. این ابزار برای اپلیکیشنهای SwiftUI مناسبتر است که در آنها استفاده از استوریبورد برای طراحی صفحه اسپلش روشی قدیمی و زشت محسوب میشود.
استفاده از فایل استوریبورد
این گزینه پیشفرض از نسخه Xcode 6 وجود دارد و کاملاً مشابه روش استفاده از interface builder برای ساخت نماها است. کافی است فایل LaunchScreen.storyboard را که در زبانه General تارگت اپلیکیشن پیکربندی شده است باز کنید:
در این صفحه میتوانید استوریبورد را بسازید، طوری که گویی نماها را با استفاده از LaunchScreen.storyboard میسازید:
استفاده از پیکربندی plist
گزینه دیگر برای ساخت صفحههای لانچ، بهرهگیری از پیکربندی plist است که احتمالاً روش آینده ما برای ساخت صفحههای لانچ خواهد بود و جایگزین استوریبورد میشود.
این پیکربندی تنها زمانی اثرگذار است که کلید استوریبورد به نام Launch screen interface file base name یا UILaunchStoryboardName را از میان کلیدهای خام که باید نمایش یابند، حذف کنید.
زمانی که شروع به پیکربندی صفحه لانچ در فایل Info.plist بکنید، متوجه خواهید شد که یافتن گزینهها کاری آسان است، زیرا به محض افزودن یک کلید فهرست میشوند. کار خود را با افزودن کلیدی به نام UILaunchScreen و با عنوان Launch Screen آغاز میکنیم:
درون این دیکشنری میتوانید یک ترکیب از گزینههای موجود تعیین کنید. این بدان معنی است که میتوانید هر دو گزینه رنگ پسزمینه و تصویر را تعیین کنید.
تصویر پسزمینه و رنگ در کاتالوگ assets پیکربندی شدهاند:
ما از یک تصویر SVG تک-مقیاس استفاده میکنیم که به صورت خودکار برای اندازههای مختلف صفحهها تنظیم میشود. درون همان دیکشنری پیکربندی، میتوانیم پدیداری نوار ناوبری، نوار زبانه و نوار ابزار را فعال یا غیر فعال کنیم. این وضعیت منجر به خروجی زیر میشود:
اگر صفحه نخست اپلیکیشن هر دو نوار زبانه و نوار ناوبری را نمایش میدهد، این وضعیت میتواند یک صفحه لانچ زیبا و عالی باشد. گذار (transition) نیز روان و طبیعی خواهد بود.
پیکربندی صفحههای لانچ برای هر اسکیمای URL
گزینه جدید دیگری که با Xcode 12 ارائه میشود، امکان پیکربندی یک صفحه بارگذاری برای هر اسکیمای URL را فراهم میسازد. اگر اپلیکیشن شما از URL-های سفارشی برای ارائه لینک عمیق (deep-link) در اپلیکیشن پشتیبانی میکند، میتوانید صفحههای بارگذاری را برای هر اسکیما تنظیم کنید تا گذارهای اپلیکیشن به صورت همواری اجرا شوند.
میتوانید لینکهای عمیق و لینکهای سراسری را با RocketSim تست کنید تا به سرعت کدنویسی کرده و بهرهوری را ارتقا بدهید.
بنابراین میتوانید گزینههای زیر را پیکربندی کنید:
- یک صفحه لانچ پیشفرض
- صفحههای لانچ برای استفاده روی اسکیماهای URL
در مثال زیر تنها نوار زبانه و نوار ناوبری برای اسکیمای URL به نام //:launchscreen نمایش مییابد:
نکته کلیدی این مثال، فراخوانی صفحه لانچ به نام UILaunchScreens است که شما را ملزم به پیکربندی پیشفرض، تعاریف صفحه لانچ و ایجاد پیوستگیهای URL میکند.
پیوستگیهای URL (URL associations) در یک دیکشنری با مجموعه کلیدهایی که روی اسکیماهای URL تنظیم شدهاند، تعریف میشوند. یک اسکیمای URL مانند //:launchscreen به صورت launchscreen تعریف شده است. این مقدار باید با شناسه تعاریف صفحه لانچ شما تطبیق داشته باشد.
سخن پایانی
صفحههای لانچ سابقهای طولانی دارند و Xcode 12 صفحهی جدیدی به این تاریخچه افزوده است. تعریف کردن صفحههای لانچ برای هر اسکیمای URL فعالسازی یا غیر فعالسازی نوار ابزارهای مختلف و تعریف کردن پیکربندی درون info.plist موجب میشود که دیگر نیازی به طراحی استوریبورد صفحه لانچ نداشته باشیم.