IDPersianDatePicker
IDPersianDatePicker copied to clipboard
یه انتخابگر تاریخ پارسی (که بمراتب از کامپوننت پیشفرض خود آیاواس بهتر و قشنگتره!)
🗓 🇮🇷 انتخابگر تاریخ پارسی
خود آیاواس یه DatePicker داره که میشه Locale و Calendar رو براش به بطوری تنظیم کرد تا باهاش بتونیم یه تاریخ پارسی انتخاب کنیم. اما شخصا بنظرم زیاد جالب نبود؛ چون با استفاده از اون:
- هربار فقط میشه یک تاریخ رو انتخاب کرد.
- از فونت پیشفرض خود سیستم عامل استفاده میکنه.
- خوشگل نیست.
برای همین تصمیم گرفتم یه چیزی پیادهسازی کنم تا این ویژگیها/ایرادات رو نداشته باشه. چندتا عکس هم ازش قرار دادم، تا بتونین یه نگاهی (قبل از استفاده) بهش بندازین.
![]() |
![]() |
![]() |
نصب
برای نصب میتونین از Cocoapod
استفاده کنین. عبارت مورد استفاده برای نصب هم اینه:
pod 'IDPersianDatePicker'
👈 توجه داشته باشین که زبان مورد استفاده توی این پروژه سوییفت نسخه ۴.۲ بوده.
استفاده
قدم اول
اولین قدم اینه که ایمپورتش کنین:
import IDPersianDatePicker
قدم دوم
مرحله بعد اینه که ویوکنترلر شما یه پروتکل رو پیادهسازی کنه. پروتکلی که باید پیادهسازی کنه PersianDatePickerDelegate
هست. وظیفه این پروتکل آماده کردن دادهها و مشخصههای مورد استفاده در انتخابگر هست.
متدها و مشخصههایی که داره بصورت زیر هست:
- متد
persianDatePicker(canSelectDate date: Date)
و خروجی از نوعBool
با استفاده از این متد میتونین از انتخاب یه سری روزها جلوگیری کنین.
- متد
persianDatePicker(didSelectDates dates: [Date])
زمانیکه که کاربر روی دکمه انتخاب بزنه، روزهایی که انتخاب شده، با استفاده از این متد در دسترس خواهند بود.
قدم سوم
برای فراخوانی و نمایش انتخابگر هم بصورت زیر عمل میکنیم:
PersianDatePicker.Present(
sourceController : UIViewController,
configuration : PersianDatePicker.Configuration,
delegate : PersianDatePickerDelegate,
completion : (() -> Void)?
)
تنظیمات (یا همون PersianDatePicker.Configuration
)
توی این نسخه، تنظیمات مورد نیاز انتخابگر رو از delegate
جدا کردم. الان موقع نمایش باید تنظیمات مورد نیاز رو بسازین و ارجاع بدین. این تنظیمات به چند بخش اصلی تقسیم میشن:
تنظیمات رابط کاربری (مشخصه ui
)
var font: UIFont = .systemFont(ofSize: 16, weight: .regular)
- فونت مورد استفاده رو مشخص میکنه.
var selectedDayTextColor: UIColor = .black
- رنگ مورد استفاده برای متن المانهای انتخابشده رو مشخص میکنه.
var selectedDayBackgroundColor: UIColor = /* a_beautiful_color */
- رنگ مورد استفاده برای پسزمینه المانهای انتخابشده رو مشخص میکنه.
تنظیمات متنها (مشخصه texts
)
var title: String = "تاریخ مورد نظر خود را انتخاب نمایید"
- عنوان مورد نظر برای نمایش.
var message: String? = nil
- توضیح مورد نظر برای نمایش.
تنظیمات انتخاب تاریخ(ها) (مشخصه selection
)
var minimumDate: Date
var maximumDate: Date
- اینها تاریخ کمینه و بیشینه رو توی تقویم مشخص میکنن.
var canSelectMultipleDates: Bool = false
- این مشخصه بیانگر اینه که آیا میشه چندین تاریخ رو انتخاب کرد، یا فقط مجاز به انتخاب یک تاریخ هست.
- مقدار پیشفرض این مشخصه برابر
false
هست.
var preselectedDates: [Date] = []
- این مشخصه، تاریخهایی رو مشخص میکنه که بصورت پیشفرض انتخابشده هستن.
- اگه این مشخصه خالی نباشه، بصورت پیشفرض صفحهای به کاربر نمایش داده میشه، که کوچکترین تاریخ انتخابشده داخلاش باشه.
var defaultDay: Date? = nil
- این مشخصه، تاریخ پیشفرض تقویم برای نمایش هست. یعنی اگر این مشخصه مقدار داشته باشه، صفحهای از تقویم بطور پیشفرض نمایش داده میشه که این تاریخ داخلاش باشه.
- مقدار پیشفرض این مشخصه برابر
nil
هست. - زمانیکه تاریخ از پیش تعیینشدهای نداشته باشیم، و این مشخصه هم مقدار نداشته باشه، بصورت پیشفرض صفحه اول مجاز تقویم به کاربر نمایش داده میشه؛ یعنی صفحهای که
minimumDate
داخلاش هست. - برای تنظیم صفحه پیشفرض تقویم، بررسی این مشخصه اولویت بالاتری نسبت به
preselectedDates
دارد.
سخن آخر
- 👀 اگه ایرادی توی روند پیادهسازی یا استفاده مشاهده کردین، حتما بگین تا رفعش کنیم.
- 🤝 اگه قابلیت خاصی به ذهنتون رسید که میتونست به بهتر شدن این پروژه کمک کنه، حتمن بگین؛ شاید با کمک هدیگه پیادهسازیاش کردیم.
- 😋 تنکیوووووو.