نسخهکیت
ویژگیها
📱 پشتیبانی از آیفون و آیپد.
😋 خوشگله.
🌓 پشتیبانی از دارکمد.
🥳 ایز آو یوز.
پیشنمایش!
این چیکار میکنه؟!
با استفاده از این نیمچه کتابخونه، میتونین تغییرات هر نسخه رو بصورت یه لیست نشون بدین. همینطور میتونین تغییرات آتی رو هم پیشاپیش به کاربراتون معرفی کنین!
چجوری ازش استفاده کنیم؟
قدم اول. نصب
عبارت زیر رو به فایل Podfile پروژه اضافه کنین:
pod 'NoskheKit'
و بعد از pod install، هرجایی که خواستین ازش استفاده کنین، import NoskheKit کنین.
قدم دوم. نمایش تغییرات
متد اصلی که کنترلر تغییرات رو نشون میده، دارای امضای زیر هست:
NoskheKit.presentChangesController(
from sourceController : UIViewController,
withData versionsData : NKVersionsData,
andUIConfiguration uiConfiguration : NKUIConfiguration
)پارامترهایی که این متد میگیره بصورت زیر هست:
- پارامتر
sourceController: از نوعUIViewControllerهست و در واقع ویوکنترلر مبدا هست. - پارامتر
versionsData: از نوعNKVersionsDataهست. این مدل اطلاعات اصلی لیست تغییرات رو در اختیار کتابخونه میذاره. - پارامتر
uiConfiguration: از نوعNKUIConfigurationهست. این مدل، تنظیمات مربوط به رابط کاربری رو آماده میکنه. با استفاده از این مدل، میتونین رابط کاربری رو شخصیسازی کنین.
مدلها
مدل NKVersionsData
این مدل، دادههای مورد نیاز برای نمایش لیست تغییرات رو فراهم میکنه. برای ساخت این مدل، چند روش آماده شده:
1️⃣ سازنده init?(plistFileConfiguration: PlistFileConfiguration)
دادهها رو با استفاده از المانی از نوع PlistFileConfiguration آماده میکنه. در واقع این سازنده، پارامتری رو دریافت میکنه که با استفاده از اون، گزینههای مربوط به فایل Plist دارای لیست تغییرات، تعریف شده.
- چون بنا به دلایلی ممکنه فایل موجود نباشه، یا بدرستی تنظیم نشده باشه، این سازنده بصورت
init?تعریف شده. - در صورت بروز خطا و همچنین شرایط خاص، پیام متناسب توی
Consoleچاپ میشه. - ساختار مورد استفاده برای فایل Plist معتبر بصورت زیر هست. در صورت نیاز، میتونین فایل
Versions-EN.plistتوی پروژه Example رو ببینین.
Root: Array
- Item 0 : Dictionary
- number : String
- changes : Array
- Item 0 : String
- Item 1 : String
- ...
- ...
2️⃣ سازنده init(from decoder: Decoder)
مدل NKVersionsData پروتکل Decodable رو پیادهسازی کرده. در نتیجه میتونیم لیست تغییرات رو از API خودمون بگیریم و داده دریافتی رو به این مدل دیکد کنیم.
- ساختار معتبر JSON برای استفاده از این سازنده بصورت زیرهست:
{
items: [
{
number: 'string',
changes: [
'string',
'string',
...
]
},
...
]
}
مدل PlistFileConfiguration
این مدل برای در نظر گرفتن فایل Plist برای آمادهسازی دادهها برای نمایش لیست تغییرات مورد استفاده قرار میگیره.
- سازنده این مدل بصورت
init(bundle: Bundle, fileName: String)هست که پارامتر اول باندل، و پارامتر دوم اسم فایل Plist رو مشخص میکنه. - یه گزینه
defaultبرای این نوع در نظر گرفته شده، که فایلی با نامVersionsرو از باندلmainمورد استفاده قرار میده.
مدل NKUIConfiguration
این مدل، تنظیمات مربوط به رابط کاربری رو آماده میکنه. مشخصههای این مدل بصورت زیر هست:
class NKUIConfiguration {
var isRightToLeft: Bool = false
var submitReviewButtonStatus: SubmitReviewButtonStatus = .notExist
var versionsDisplayConfiguration: VersionsDisplayConfiguration = .init()
}- مشخصه
isRightToLeft: مشخصکننده این هست که ویوها برای زبانهای راستچین پیکربندی بشن یا نه. - مشخصه
submitReviewButtonStatus: تنظیمات مربوط به دکمه «ثبت نظر» رو آماده میشه. - مشخصه
versionsDisplayConfiguration: این مشخصه، تنظیمات مربوط به نمایش نسخهها رو مشخص میکنه.
مدل SubmitReviewButtonStatus
این مدل، در واقع یه enum هست، که دارای caseهای زیر هست.
- گزینه
notExist: دکمه «ثبت نظر» نمایش داده نمیشه. - گزینه
exist(configuration: Configuration): دکمه «ثبت نظر» نمایش داده میشه و تنظیمات نمایش هم با استفاده ازconfigurationآماده میشه.
مدل SubmitReviewButtonStatus.Configuration
این مدل بصورت زیر هست:
class Configuration {
let title : String
var font : UIFont
var backgroundColor : UIColor
var textColor : UIColor
}- بجز
title، بقیه مشخصهها دارای مقدار پیشفرض هستن.
مدل CurrentVersionDisplayConfiguration و OtherVersionDisplayConfiguration
این دو مدل، برای تنظیمات نمایش نسخهها مورد استفاده قرار میگیرن. اولی برای نمایش تغییرات نسخه فعلی، و دومی برای نمایش تغییرات بقیه نسخهها.
هر دو شبیه هم هستن، فقط با یه تفاوت: اولی، یه مشخصه هم برای نمایش What'sNew داره.
ساختار کلیشون بصورت زیر هست:
class ... {
var whatsNew : WhatsNewUIConfiguration? //ONLY in CurrentVersionDisplayConfiguration
var titleColor : UIColor
var titleFont : UIFont
var changesColor : UIColor
var changesFont : UIFont
}- همه مشخصهها دارای مقدار پیشفرض هستن.
مدل WhatsNewUIConfiguration
تنظیمات نمایش What'sNew رو آماده میکنه. دوتا مشخصه بیشتر نداره:
struct WhatsNewUIConfiguration {
var text : String
var textColor : UIColor
}