نسخهکیت
ویژگیها
📱 پشتیبانی از آیفون و آیپد.
😋 خوشگله.
🌓 پشتیبانی از دارکمد.
🥳 ایز آو یوز.
پیشنمایش!
این چیکار میکنه؟!
با استفاده از این نیمچه کتابخونه، میتونین تغییرات هر نسخه رو بصورت یه لیست نشون بدین. همینطور میتونین تغییرات آتی رو هم پیشاپیش به کاربراتون معرفی کنین!
چجوری ازش استفاده کنیم؟
قدم اول. نصب
عبارت زیر رو به فایل 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
}