مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

دوره تکمیلی آموزش iOS: سفارشی سازی UITableView


دوره تکمیلی آموزش برنامه نویسی iOS: سفارشی سازی UITableView و پس زمینه UITableViewcell با استفاده از Storyboard

در آخرین جلسه از دوره تکمیلی برنامه نویسی iOS ، ما نحوه سفارشی سازی navigation bar و کلیدها را با استفاده از تصاویر پس زمینه ، نشان دادیم. در این جلسه ، قصد داریم نگاهی به سفارشی سازی و سبک بندی UITableView و UITableViewCell بیاندازیم.

اگر از ابتدا ، آموزش های ما را در دروه برنامه نویسی iOS دنبال کرده باشید ، می دانید که ما ، یک جلسه تحت عنوان سفارشی سازی سلول table view با استفاده از Interface Builder داریم. در این آموزش ، ما می خواهیم کارهای متفاوتی انجام دهیم. به جای استفاده از Interface Builder برای تغییر UITableViewCell ، قصد داریم نحوه استفاده از Storyboard ها جهت سبک بندی سلول را به شما نشان دهیم. Storyboard ها ، عملیات سفارشی سازی سلول های جدول را با معرفی سلول prototype ، بسیار ساده تر نموده است. به طور خلاصه ، شما می توانید موارد زیر را در این آموزش ، یاد بگیرید:

  1. سفارشی سازی UITableViewCell با استفاده از Storyboard.
  2. سبک بندی UITableViewCell و UITableView با تصاویر پس زمینه.

برای انجام سفارشی سازی ، یک table view ساده را کمی تغییر داده و آن را سبک بندی نموده و جذاب تر خواهیم کرد. برای کمک به شما ، جهت داشتن تمرکز بیشتر بر نحوه انجام سفارشی سازی ، ما پروژه Xcode را برای شما آماده کرده ایم ، تا کار را با آن شروع کنید. قبل از اقدام ، ابتدا پروژه Xcode را از اینجا  download the Xcode project دانلود کنید ( توجه: پروژه با استفاده از Xcode 4.5 ایجاد شده است).

طراحی سلول های Prototype در Storyboard

از زمان انتشار iOS 5 ، شرکت اپل ، Storyboard را جهت ساده کردن روش های طراحی رابط کاربری اپ ها ، معرفی نموده است. برای سفارشی سازی یک سلول جدول ، دیگر نیازی به ایجاد یک سلول جداگانه در Interface Builder نداریم. می توانیم سلول را در داخل ویرایشگر Storyboard طراحی کنیم.

پروژه Xcode را که دانلود کرده اید ، باز کنید. به Storyboard رفته و باید چیزی شبیه به تصویر زیر را مشاهده نمایید:

وقتی که یک UITableViewController  در Story اضافه می کنیم ، به طور پیش فرض ، باید یک سلول prototype را ببینیم. اکنون می توانیم عناصر کنترل UI دیگری (مانند UILabel ، UIImageView) به سلول prototype اضافه کنیم. بیایید ابتدا ارتفاع سلول را تغییر بدهیم. Prototype Cells را انتخاب کرده و بر روی inspector  مربوط به “size” کلیک کرده و row height را از 44 به 71 تغییر می دهیم.

در ادامه ، Image View را از object library به سلول prototype درگ می کنیم. دوباره ، image view را انتخاب کرده و در inspector مربوط به “Size” کلیک کرده و صفت های “X” ، “Y” ، “Width” و “Height”  را مطابق تصویر زیر تغییر می دهیم:

به inspector مربوط به “Attributes” سوئیچ می کنیم ، “Tag” را به 100 تنظیم می کنیم.  شما می توانید tag را به عنوان یک شناسه یکتا از UI control در نظر بگیرید. بعداً در داخل کدها ، ما از این tag برای تعیین image view استفاده خواهیم کرد.

سپس یک برچسب ، به سلول درگ کرده و نام آن را “RecipeName” قرار می دهیم. این برچسب برای نمایش نام دستور پخت ، مورد استفاده قرار می گیرد. در inspector مربوط به “Size” گزینه های “X” را به 92 ، “Y” را به 7 ، “Width” را به 186 و “Height” را به 21 تنظیم می کنیم. در inspector مربوط به “Attributes” گزینه font type را به “Helvetica Neue Condensed Bold” تغییر داده و اندازه فونت را به 21 points تنظیم می کنیم. در آخر ، مقدار “Tag” را به 101 تنظیم می کنیم.

برچسب دیگری را به سلول اضافه کرده و نام آن را “Details” قرار می دهیم. در inspector مربوط به “Size” ، مقدار “X” را به 92 ، “Y” را به 32 ، “Width” را به 186 و “Height” را به 33 تنظیم می کنیم. به inspector مربوط به “Attributes” سوئیچ می کنیم ، مقدار “Tag” را به 102 تنظیم می کنیم.

کدنویسی Table View Controller

با در اختیار داشتن رابط کاربری طراحی شده ، بیایید به سراغ بخش کدنویسی برویم. فایل “RecipeViewController.m” را که متناظر با Table View Controller است ، باز می کنیم ، متد “cellForRowAtIndexPath:” را مطابق کدهای زیر را تغییر می دهیم:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
    // Configure the cell...
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    
    // Display recipe in the table cell
    Recipe *recipe = [recipes objectAtIndex:indexPath.row];
    UIImageView *recipeImageView = (UIImageView *)[cell viewWithTag:100];
    recipeImageView.image = [UIImage imageNamed:recipe.imageFile];
    
    UILabel *recipeNameLabel = (UILabel *)[cell viewWithTag:101];
    recipeNameLabel.text = recipe.name;
    
    UILabel *recipeDetailLabel = (UILabel *)[cell viewWithTag:102];
    recipeDetailLabel.text = recipe.detail;
 
    return cell;
}

کدی که ما اضافه کرده ایم (از خط 12 تا 20) برای نمایش دادن برچسب های سلول و image view می باشد. همان طور که در کدها مشاهده می شود ، ما متد “viewWithTag:” را با مقدار tag برای شناسایی مؤلفه UI فراخوانی کرده ایم.

اپ را کامپایل کرده و اجرا می نماییم. اپ باید مطابق تصویر زیر باشد:

سبک بندی UITableCell با تصویر پس زمینه

تاکنون ، ما نحوه ایجاد سلول جدول با استفاده از Storyboard را آموزش داده ایم ، اما ، سلول table view هنوز سبک ساده دارد. ما می خواهیم ظاهر و سلول های جدول را تغییر داده و آنها را زیباتر کنیم. در پروژه Xcode ، سه تصویر پس زمینه برای سلول جدول قرار داده ایم. تصاویر ، برای استفاده در انواع مختلف سلول ها طراحی شده اند.

کلاس UITableViewCell  به توسعه دهندگان امکان می دهد که یک background view را با استفاده از متد “backgroundView:” طراحی کنند. برای تخصیص تصویر پس زمینه سفارشی ، ما می توانیم یک شیء UIImageView  با تصویر پس زمینه ایجاد کرده و آن را به عنوان background view مربوط به سلول تنظیم نماییم . کد زیر را به متد “cellForRowAtIndexPath:” اضافه می کنیم:

    // Assign our own background image for the cell
    UIImage *background = [self cellBackgroundForRowAtIndexPath:indexPath];
    
    UIImageView *cellBackgroundView = [[UIImageView alloc] initWithImage:background];
    cellBackgroundView.image = background;
    cell.backgroundView = cellBackgroundView;

هنوز یک کار مانده است که فراموش کرده ایم. ما متد “cellBackgroundForRowAtIndexPath:” را پیاده سازی نکرده ایم. همان طور که قبلاً توضیح داده ایم ، ما سه نوع تصویر پس زمینه داریم. سلول های بالا و پایین با تصاویر پس زمینه متفاوت طراحی شده اند ، که با این کار از سایر سلول ها تفکیک می شوند. از این رو ، ما متد “cellBackgroundForRowAtIndexPath:” را برای تعیین تصویر پس زمینه جهت اختصاص آن به سلول ها ، ایجاد می کنیم. کد زیر را قبل از متد “cellForRowAtIndexPath:” اضافه می کنیم:

- (UIImage *)cellBackgroundForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSInteger rowCount = [self tableView:[self tableView] numberOfRowsInSection:0];
    NSInteger rowIndex = indexPath.row;
    UIImage *background = nil;
    
    if (rowIndex == 0) {
        background = [UIImage imageNamed:@"cell_top.png"];
    } else if (rowIndex == rowCount - 1) {
        background = [UIImage imageNamed:@"cell_bottom.png"];
    } else {
        background = [UIImage imageNamed:@"cell_middle.png"];
    }
    
    return background;
}

برای اولین ردیف از سلول (یعنی rowIndex == 0) ، این متد ، تصویر سلول بالایی را باز می گرداند. اگر سلول ، آخرین سلول جدول (یعنی rowIndex == rowCount – 1) باشد ، متد ، تصویر سلول پایینی را باز می گرداند. برای مابقی سلول ها ، متد به سادگی تصویر سلول میانی را باز می گرداند.

در نهایت ، خط کد زیر را در متد “viewDidLoad” از فایل RecipeViewController.m اضافه می کنیم. این خط ، به سلول جدول می گوید که جداکننده را نشان ندهد ، زیرا تصاویر سلول ها ، قبلاً با جداکننده همراه شده اند.

    [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];

اپ را کامپایل و اجرا می نماییم. کار این بخش ، با اپی مانند تصویر زیر تمام می شود:

سبک بندی پس زمینه Table View

اکنون ، ظاهر اپ خیلی بهتر به نظر می آید ، موافق هستید؟ بیایید آن را با تخصیص یک تصویر پس زمینه برای بخش view بهتر نماییم. کد زیر را به متد “viewDidLoad” از فایل RecipeViewController.m اضافه می کنیم.

    self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"common_bg"]];
    self.tableView.backgroundColor = [UIColor clearColor];

از آن جایی که RecipeViewController  یک زیرکلاس از UITableViewController می باشد ، ما از “self.parentViewController” برای دسترسی به view والد آن ، پس از اختصاص دادن تصویر پس زمینه ، استفاده می کنیم. به طور پیش فرض ، table view به صورت رنگ سفید نمایش داده می شود. ما رنگ آن را به شفاف تنظیم می کنیم ؛ تا پس زمینه view والد را مسدود نکند.

قبل از این که اپ را اجرا کنیم ، می خواهیم یک تغییر دیگر نیز اعمال کنیم. table view اکنون بسیار نزدیک به navigation bar است. می توانیم یک فاصله (padding) در بالای Table view اضافه کنیم. برای افزودن فاصله ، می توانیم از خصیصه contentInset  ، برای تعیین یک ناحیه بافر اطراف محتوای بخش view استفاده کنیم. خصیصه contentInset  ، یک ساختار UIEdgeInsets با فیلدهای top ، bottom ، left و right می باشد. بیایید کد زیر را به “viewDidLoad” اضافه کنیم:

    UIEdgeInsets inset = UIEdgeInsetsMake(5, 0, 0, 0);
    self.tableView.contentInset = inset;

از طریق کد بالا ، یک ناحیه بافر اضافی حاصل می شود که اندازه آن 5 پیکسل در بالای table view می باشد. اپ را کامپایل کرده و دوباره اجرا می کنیم. اپ باید اکنون با padding اضافه شده و تصویر پس زمینه ، سفارشی شده باشد.

 

موضوع جلسه بعد چیست؟

امیدواریم که از این آموزش لذت برده باشید و برای شما مفید واقع شود. در جلسات قبل ، ما نحوه سفارشی سازی tab bar و navigation bar را نشان داده ایم. در ترکیب با این آموزش ، شما باید قادر باشید ، اپ مبتنی بر جدول خود را بیشتر جذاب تر نمایید. در جلسات بعد ، ما به شما نحوه سبک بندی سایر مؤلفه های UI را نشان خواهیم داد. با ما همراه باشید.

فصلِ: 3 , تعداد قسمت ها: 179 , سطح: صفر تا صد

این فصل در یک نگاه:

در این دوره آموزشی ، برنامه نویسی اندروید و ios را با استفاده از زامارین خواهیم آموخت. همچنین به صورت کاملا پروژه محور ، اپلیکیشن فروشگاهی مشابه دیجی کالا را پیاده سازی خواهیم کرد. در انته…
فصلِ: 5 , تعداد قسمت ها: 221 , سطح: صفر تا صد
موضوعات: آموزش IOS

این فصل در یک نگاه:

در این فصل:-نمایش notification به کاربر زمانی که اتفاقاتی از قبیل لایک کردن پست و ... میافتد(این مبحث مبحثی مهم بوده و ج…

  توضیحات کلی دوره: با سلام خوش اومدین به حرفه ای ترین دوره ی Swift ابتدای کار ممکن است سوالی برای شما پیش آید: -من نیازی به ساخت اپلیکیشن اجتماعی ندارم چرا باید این دوره را ببینم؟ ج…
فصلِ: 7 , تعداد قسمت ها: 159 , سطح: صفر تا صد
موضوعات: آموزش IOS

این فصل در یک نگاه:

اپل نویس حرفه ای شوید... با این پکیج کسب درآمد میلیونی کنید....   در این پکیج به نکات ریز و درشت زیادی پرداختیم که خیلی خیلی میتونه به شما کمک کنه که تبدیل به برنامه نویس حرفه ای شوید... …
فصلِ: 12 , تعداد قسمت ها: 126 , سطح: صفر تا صد
موضوعات: آموزش IOS

این فصل در یک نگاه:

فصل 16 فصل آخرمون هست و میایم توی این فصل یه سری مباحث کوچیکی که جامونده و کارهای نهایی برای انتشار برنامه توی مایکت های…

با سلام نکته:هیچ نیازی به mac و یا iphone نیست... نکته:هیچ نیازی به بلد بودن برنامه نویسی از قبل نیست... مباحثی که توی این دوره مرور میکنیم میتونه ما رو از سطح صفر برنامه نویسی ios به صد …
فصلِ: 6 , تعداد قسمت ها: 194 , سطح: صفر تا صد

این فصل در یک نگاه:

در این فصل آپدیت های مربوط به دوره را قرار میدهیم…

با سلام و خسته نباشد خدمت کلیک سایتی های عزیز در ادامه با توضیحات مختصری درمورد دوره ی react native با ما همراه باشید: React Native چیست؟ قطعا یکی از آرزوهای برنامه نویسان این میباشد که ب…
فصلِ: 5 , تعداد قسمت ها: 51 , سطح: صفر تا صد

این فصل در یک نگاه:

اموزش پرداخت درون برنامه ای بازار در یونیتی-اموزش خرید سکه در بازی-اموزش خرید مصرفی و غیر مصرفی…

توضیحات کلی مجموعه: آموزش مقدماتی تا پیشرفته یونیتی(ساخت بازی توپ چرخنده-اموزش بازی دوبعدی-اموزش بازی سه بعدی اول شخص شوتر-اموزش بازی سه بعدی رالی (ماشین سواری))   سرفصلهای دوره: نصب ی…
فصلِ: 2 , تعداد قسمت ها: 68 , سطح: صفر تا صد

این فصل در یک نگاه:

آموزش ساخت یک فروشگاه کوچک-آموزش کار با bottom navigation -آموزش کار با تب بار-آموزش کار با scrollview - آموزش کار با ان…

توضیحات کلی مجموعه: آموزش دوره فلاتر از پایه تا پیشرفته(این دوره به دوره متخصص فلاتر تغییر پیدا کرد) درسال های گذشته تعدا زیادی فریمورک معرفی شد که هرکدام تجربه خاص خودش رو داشت،اما فلاتر …
فصلِ: 5 , تعداد قسمت ها: 25 , سطح: صفر تا صد

این فصل در یک نگاه:

فصل پنجم…

توضیحات کلی مجموعه: درباره گیت: لذت پیش بردن پروژه های برنامه نویسی خود را با بهترین ورژن کنترل سیستم جهان تجربه کنید کامل ترین دوره ی آموزشی گیت و گیت هاب به همراه مثال های کاربردی گی…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید