آیا ما از یک کلاس View controller برای هر دو دستگاه آیفون و آیپد استعمال میکنیم؟ یا این که برای هر مورد از کلاس View controller جدا ای به کار گیری می نماییم؟ به صورت همگانی ، به کار گیری از view controller های غیروابسته برای پلتفرم های متفاوت طراحی اپلیکیشن در مشهد ، معمولی خیس میباشد. چنانچه شل خیس میباشید که View controller ها مانند نمونه تصویر فوق ، یک کدام از باشند ، میتوانید از کلاس view controller واحدی برای هر دو پلتفرم به کار گیری فرمائید. البته بدانید که هندل کردن کدها در آیفون و آیپد متعدد میباشد.
iOS SDK ماکرو UI_USER_INTERFACE_IDIOM را برای ما مهیا می نماید تا مسیرهای کد شرطی برای حفاظت از خصوصیت های خاص دستگاه ها را ساخت کنیم. این ماکرو به ما اذن میدهد که به راحتی نوع دستگاه را انتخاب کنیم. در شرایطی که دستگاه ، یک آیپد باشد ، مقدار رجوع داده گردیده ماکرو ، UIUserInterfaceIdiomPad خواهد بود. در صورتی دستگاه هم آیفون و یا این که آیپد لمسی باشد ، مقدار رجوع و برگشت داده گردیده بوسیله ماکرو UIUserInterfaceIdiomPhone میباشد. عبارت شرطی مبتنی بر کد تحت است:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
// Place iPhone/iPod specific code here...
} else {
// Place iPad-specific code here...
}
بیایید شغل را در درون نمونه دنبال کنیم. پروژه Xcode دربردارنده یک کلاس ViewController است که با view controller هر دو نسخه Storyboard آیفون و آیپد مرتبط میباشد.
آغاز ، یک رابطه “Action” در بین کلید Play و پوشه ViewController.h ساخت و ساز میکنیم. action مشابهی را به برای کلیدهای Play در هر دو نسخه Storyboard ها مرتبط میسازیم.
در پوشه ViewController.m ، اسلوب play: را با کدهای ذیل دستکاری میکنیم:
- (IBAction)play:(id)sender {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
// For iPhone
UIAlertView *playAlert = [[UIAlertView alloc] initWithTitle:@\"New Game\" message:@\"Start Playing...\" delegate:self cancelButtonTitle:@\"OK\" otherButtonTitles:nil, nil];
[playAlert show];
} else {
// For iPad
UIAlertView *playAlert = [[UIAlertView alloc] initWithTitle:@\"Game Over\" message:@\"Just ended...\" delegate:self cancelButtonTitle:@\"OK\" otherButtonTitles:nil, nil];
[playAlert show];
}
}
چیزی که ما اجرا دادیم صرفا اکران دو پیام هشدار متعدد در آیفون و آیپد بود. برنامه را مجدد در مشابه سازی آیفون و آیپد کامپایل و انجام میکنیم. بسته به دستگاه آیتم استعمال ، پیام هشدار مختلفی را اخذ خوا هیم کرد.
نرمافزار demo بسیار معمولی میباشد. ولی ، علامت میدهد زمانی که میخواهیم یک کلاس view controller متداول را به اشتراک بگذاریم ، چهگونه قادر خواهیم بود میان گونه های دستگاه ها تمایز قائل شویم.
ساخت اپلیکیشن Universal با به کار گیری از Interface Builder
بسیار بهتر، تا اینجا اصول توسعه و گسترش اپلیکیشن universal را آموختید. پس از Storyboard ، شاید بخواهید که Interface Builder را برای ساخت و ساز رابط کاربری به کار گیری فرمایید. در این زمینه ، ما دو پوشه nib ساخت خواهیم کرد – یکی از برای آیفون و دیگری برای آیپد. پوشه nib آیپد به صورت متداول با modifier دستگاه “~ipad” نمایش داده می شود.
ما وارد جزئیات کد مرتبط با Interface builder نخواهیم شد. ولی معمولاً ، یک قسمت شرطی ، برای تعیین فولدر nib جهت بار گذاری مطابق نوع دستگاه سرازیر داریم. قطعه کد آیتم استعمال به تفصیل تحت میباشد:
+ (id) loadFromXib {
NSString *xibName = NSStringFromClass(self);
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
xibName = [xibName stringByAppendingString:@\"~ipad\"];
}
return [self loadFromXibNamed:xibName];
}
فعالسازی تصاویر ، آیکون نرمافزار و تصاویر اپلیکیشن
به غیر از دو نسخه از storyboard یا این که Interface builder ، ما بایستی دو نسخه از پوشه های منبع را نیز بسازیم. برای مثال ، در صورتیکه از تصاویر به کار گیری میکنیم ، ممکن میباشد ما یحتاج باشد که نسخه های گرانقدر خیس (یا این که با وضوح فراتر) را برای پناه از دستگاه های آیپد ، اضافه نماییم. برای نگهداری آسانی مطالب ، ما به صورت خلاصه سه نوع پوشه منبع مثلا تصویر launch ، آیکون برنامه و تصاویر آپ را آیتم کنکاش قرار خوا هیم بخشید.
تصاویر فعالسازی
برنامه های universal بایستی تصاویر فعالسازی را برای هر دو نوع دستگاه های آیفون و آیپد مهیا کنند. به صورت معمول ، ما می بایست یک نصویر فعال سازی را در جهت عمودی برای برنامه های آیفون و هم اینگونه نرمافزار های آیپد به کار گیری کنیم.
نرم افزار های آیفون صرفا به یک تصویر در جهت عمودی نیاز داراهستند ، در حالی که نرمافزار های آیپد ، به صورت معمول ، به تصاویر مختلفی در جهت های عمودی و افقی نیاز دارا هستند. به صورت خلاصه ، ما می بایست تصاویر launch تحت را برای نرمافزار Universal آماده کنیم:
تصویر فعالسازی برای آیفون غیر از retina (320 در 480)
تصویر فعالسازی برای آیفون retina 4 , 4S (640 در 960)
تصویر فعال سازی برای آیفون retina 5 (640 در 1136)
تصویر فعال سازی برای آیپد retina (1024 در 768)
تصویر فعال سازی برای آیپد retina (2048 در 1536)
Xcode 5 قابلیت و امکان Asset Catalogs را معرفی می کند که رئیس تصاویر راهاندازی و آیکون آپ ها را بی آلایش می نماید. در نصیب پیکربندی General مرتبط با Target ، بایستی قسمت های App Icons و Launch Images را پیدا کنیم:
روی کلید فلس از Launch Image برای دسترسی به دسته تصاویر launch کلیک میکنیم. گروه تصویر راهاندازی ، دربردارنده آحاد نمایه های تصویر فعالسازی استاتیک است که نرم افزار در حین راهاندازی اکران میدهد. ما به آسانی میتوانیم تصویر را از Finder درگ کرده و آن را به image well مطلوب تهیه و تنظیم کنیم
در بالا با یک سوال آغاز می کنیم. چرا از صفت توده برای تلفن همراه اندرویدی البته مفرد برای آیفون استعمال کردهایم؟ در حالتی که شما برای خرید یک تلفن همراه هوشمند وارد بازار گردید از شما خواهند پرسید که موبایل اندرویدی می خواهید یا این طراحی اپلیکیشن در مشهد که آیفون. ولی درصورتیکه از دنیای موبایلهای هوشمند بیخبر باشید احتمالاً برایتان سؤال میگردد کهاین دو چه فرقهایی باهم داراهستند؟ بازار مالامال میباشد از تلفن همراههای مختلف از برندهایی گوناگون با تنوعی بیشمار پس چرا کلیهی آن ها دراین دو واژه و کلمه خلاصه میگردد؟ جواب بهاین سوال در گرو ذکر مفهومی به اسم «سیستمادله» میباشد که فارغ از ارائه تعریفی بی نقص از آن نمیقدرت به مقایسه این دو پرداخت. از طرفی توضیح بی نقص این معنا در چارچوب این نوشته ی علمی نمیگنجد لذا بهشکل مختصر تعریفی از آن ذکر خواهیم کرد تا تفاوت تلفن همراههای اندرویدی و آیفون برای شما معنیخیس باشد. سیستم استدلال چیست؟ سیستمبرهان بهطور خلاصه به قابل انعطافافزاری گفته میشود که به وسیله خالق روی هرنوع وسیلهی هوشمندی پیادهسازی میشود تا مخاطب بتواند از آن به کارگیری نماید. درواقع یک دستگاه هوشمند فارغ از سیستماستدلال، وسیلهای بیسود میباشد که هیچکاری را نمیتواند اجرا دهد. وظیفهی سیستمدلیل آن میباشد که با رابطه با اجزای درونی دستگاه (مشقت بارافزار) بتواند یک دور و اطراف مجازی را بهوجود آورد که مخاطب بتواند با آن فعالیت نماید و وظایفی که امروزه گذران امورات را سوای داشتن این داشتن این دستگاههای هوشمند غیر ممکن نموده است، ایفا دهد. بابیان این مضمون پی می بریم که استدلال این دوگانگی برسر سیستمدلیل میباشد البته سؤال آجل که مطرح می گردد آن میباشد که چرا اسمهایی که برای تفکیک این دو گروه بهفعالیت برده می گردد ارتباطی با یکدیگر ندارند؟ «آیفون» اسم تجاری تلفن همراههای ایجاد کرد کمپانی اپل میباشد. درحالیکه «اندروید» اسم موبایل وجود ندارد، اسم سیستمعاملی میباشد که روی طیف وسیعی از تلفن همراههایی با مارکهای گوناگون پیادهسازی گردیده است. این درحالیمیباشد که سیستمدلیل تلفن همراههای آیفون iOS اسم دارااست ولی به کارگیری از اسم iOS برای تعیین نوع موبایل رایج وجود ندارد. برای جواب بدین سوال نیز مایحتاج میباشد تاریخچهای مختصر از هر مورد را آیتم رسیدگی در اختیار بگذاریم. iOS در سال ۲۰۰۷ استیو جابز، نهادگذار و مدیرعامل قبلی اپل، اولی آیفون را با سیستمدلیل iPhone Operating System 1 به بازار معرفی کرد. اسم این سیستمادله به دوران سه سال مراقبت شد، تااینکه با نشر iOS 4 در ژوئن ۲۰۱۰ این اسم به iOS تغییرو تحول کرد. سیستم ادله iOS مختص به تلفن همراههای آیفون میباشد که حق به کار گیری از آن صرفا در انحصار کمپانی اپل میباشد؛ بهاین معنی کهاین سیستماستدلال صرفا روی موبایل های آیفون قابل انجام میباشد. اندروید سیستمبرهان اندروید برای نخسین بار به وسیله اندی رابین در سال ۲۰۰۳ معرفی شد. در سال ۲۰۰۵ گوگل اندروید را خرید و عرضه سیستمدلیل اندروید به سازندگان تلفن همراههای هوشمند را استارت کرد. چنین بود که HTC در سال ۲۰۰۸ اولین موبایل اندرویدی به اسم HTC Dream را با اندروید 1.0 معرفی کرد. مالکیت اندروید از سال ۲۰۰۵ تا به امروز به کمپانی گوگل وابستگی دارااست. اندروید یک سیستمبرهان منبع گشوده میباشد که در حال حاضر گوگل توسعه و گسترشی آن را برعهده داشته و کمپانیهای مختلفی مجاز به استعمال از آن می باشند؛ بهاین معنی که هر آفرینندهای قادر است از این سیستماستدلال در تولیدات هوشمند خویش به کار گیری نماید و حتی کد آن را سازه بر نیاز و ترجیح خویش تغییر تحول دهد. نوشتهیعلمیهای مرتبط: تاریخچه بدون نقص اندروید؛ ۱۵ سال با دوستداشتنیترین سیستمبرهان گوشی چهگونه نرم افزار های اندروید را در ویندوز 11 نصب کنیم؟ [یار و همدم با کلیپ] پس با این مقایسه انگیزه اینکه چرا همگی تلفن همراههای اندرویدی درمقابل آیفون قرار می گیرند برما آشکار میشود. درواقع تلفن همراه های آیفون تلفن همراههایی میباشند که صرفا با سیستمادله منحصر به فرد کمپانی اپل یعنی iOS عمل مینمایند. به عبارتیطور که هیچ سیستماستدلال دیگری مانند اندروید روی آیفون قابل انجام وجود ندارد، سیستمدلیل iOS نیز روی هیچ تلفن همراه دیگری بهجز آیفون چشم نمی شود. ازطرف دیگر اندروید سیستمعاملی میباشد که کمپانیهای گوناگون اذن دارا هستند روی تولید ها خویش پیاده نمایند و یوزرها با خرید موبایلهایی از مارک سامسونگ، شیائومی، هواوی و ... می توانند از سیستم دلیل اندروید سودمند شوند. از اینرو اندروید محصور یه یک موبایل خاص یا این که یک مارک خاص نمیشود.