আইওএস 8 ইউআইটিএবলভিউ বিভাজক ইনসেট 0 কাজ করছে না


662

আমার একটি অ্যাপ আছে যেখানে UITableView ডান - এর বিভাজক আঁটা কাস্টম মান সেট করা হয় 0, লেফট 0। এটি পুরোপুরি কাজ করে iOS 7.x, তবে iOS 8.0আমি দেখতে পাচ্ছি যে বিভাজনকারী ইনসেটটি 15ডানদিকে ডিফল্টে সেট করা আছে । যদিও এটি সেট করা xib ফাইলগুলিতে 0এটি এখনও ভুলভাবে প্রদর্শিত হয়।

আমি কীভাবে UITableViewCellবিভাজক মার্জিনগুলি সরিয়ে ফেলব ?


আপনি কি ইনসেটটি 0 এর পরিবর্তে 0.001 এ সেট করার চেষ্টা করেছেন? আমার মনে আছে একই ধরণের সমস্যা রয়েছে যেখানে প্রান্ত ইনসেটটি 0 তে প্রতিক্রিয়া দেখায় না তবে 0.001 (বা এর মতো ছোট কিছু) প্রতিক্রিয়া জানায়।
রিফ্রেশ

আমি এটি চেষ্টা করেছিলাম এবং এটিও কার্যকর হয় নি ..
ব্যবহারকারীর 3570727

4
তারপরে আমি পৃথককারীদের রঙ নির্ধারণ করতে [UIColor clearColor]এবং আপনার নিজস্ব বিভাজক অঙ্কনের পরামর্শ দেব । আপনি সেভাবে অনেক বেশি নমনীয়।
freshking

1
আমি এখনও বিশ্বাস করতে পারি না যে এটি এখনও একটি UITableViewCellSeparatorStyleডিফল্ট নয়। এমনকি গৃহীত উত্তরটি আমার মতে একটি সত্যই নোংরা হ্যাক।
এনরিকো সুসাত্তিও

উত্তর:


1071

আইওএস 8.0 কোষ এবং সারণী দর্শনে লেআউটমার্জিনের বৈশিষ্ট্যটি উপস্থাপন করে।

এই সম্পত্তিটি আইওএস 7.0 এ উপলভ্য নয় সুতরাং আপনাকে এটি নির্ধারণের আগে আপনার চেক করা উচিত!

সহজ ফিক্সটি হ'ল আপনার সেলটি সাবক্লাস করা এবং @ ব্যবহারকারী 3570727 এর পরামর্শ অনুসারে লেআউটটি মার্জিন সম্পত্তিকে ওভাররাইড করুন। তবে আপনি নিরাপদ অঞ্চল থেকে মার্জিন উত্তরাধিকারের মতো কোনও সিস্টেমের আচরণ হারাবেন তাই আমি নীচের সমাধানটির প্রস্তাব দিচ্ছি না:

(উদ্দেশ্য গ)

-(UIEdgeInsets)layoutMargins { 
     return UIEdgeInsetsZero // override any margins inc. safe area
}

(দ্রুত 4.2):

override var layoutMargins: UIEdgeInsets { get { return .zero } set { } }

আপনি যদি সম্পত্তিটি ওভাররাইড করতে না চান বা শর্তসাপেক্ষে সেট করার দরকার পড়ে থাকেন তবে পড়া চালিয়ে যান।


layoutMarginsসম্পত্তি ছাড়াও , অ্যাপল আপনার কক্ষে এমন একটি সম্পত্তি যুক্ত করেছে যা এটি আপনার টেবিল ভিউয়ের মার্জিন সেটিংস উত্তরাধিকারী হতে বাধা দেবে। যখন এই সম্পত্তিটি সেট করা থাকে, তখন আপনার ঘরগুলি টেবিল দেখার থেকে স্বতন্ত্রভাবে তাদের নিজস্ব মার্জিনগুলি কনফিগার করার অনুমতি দেওয়া হয়। এটিকে ওভাররাইড হিসাবে ভাবেন।

এই preservesSuperviewLayoutMarginsবৈশিষ্ট্যটি কল করা হয়েছে এবং এটিতে সেট করা আপনার সারণী দর্শনে সেট করা যা কিছু সেট করে সেটিকে ওভাররাইড করার NOঅনুমতি দেবে । এটি উভয়ই সময় সাশ্রয় করে ( আপনাকে টেবিল ভিউ'র সেটিংস সংশোধন করতে হবে না ) এবং আরও সংক্ষিপ্ত। বিস্তারিত ব্যাখ্যার জন্য দয়া করে মাইক আবদুল্লাহর জবাবটি দেখুন।layoutMarginlayoutMargin

দ্রষ্টব্য: মাইক আবদুল্লাহর উত্তরে প্রকাশিত হ'ল সেল-লেভেল মার্জিন সেটিংয়ের জন্য যা পরিষ্কার তা অনুসরণ করা হচ্ছে । আপনার কক্ষটি সেট করা আপনার preservesSuperviewLayoutMargins=NOটেবিল ভিউ সেল সেটিংসকে ওভাররাইড না করে তা নিশ্চিত করবে। যদি আপনি আসলে আপনার পুরো টেবিলের দৃশ্যের সামঞ্জস্যপূর্ণ মার্জিন রাখতে চান তবে অনুগ্রহ করে আপনার কোডটি সেই অনুযায়ী সামঞ্জস্য করুন।

আপনার ঘরের মার্জিন সেটআপ করুন:

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Remove seperator inset
    if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
           [cell setSeparatorInset:UIEdgeInsetsZero];
    }

    // Prevent the cell from inheriting the Table View's margin settings
    if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
        [cell setPreservesSuperviewLayoutMargins:NO];
    }

    // Explictly set your cell's layout margins
    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
        [cell setLayoutMargins:UIEdgeInsetsZero];
    }
}

সুইফট 4:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    // Remove seperator inset
    if cell.responds(to: #selector(setter: UITableViewCell.separatorInset)) {
        cell.separatorInset = .zero
    }
    // Prevent the cell from inheriting the Table View's margin settings
    if cell.responds(to: #selector(setter: UITableViewCell.preservesSuperviewLayoutMargins)) {
        cell.preservesSuperviewLayoutMargins = false
    }
    // Explictly set your cell's layout margins
    if cell.responds(to: #selector(setter: UITableViewCell.layoutMargins)) {
        cell.layoutMargins = .zero
    }
}

preservesSuperviewLayoutMarginsআপনার কক্ষে সম্পত্তিটি কোনও হিসাবে সেট করা আপনার টেবিল ভিউটিকে আপনার সেল মার্জিনকে ওভাররাইড করা থেকে বিরত করা উচিত । কিছু ক্ষেত্রে, এটি সঠিকভাবে কাজ করে না বলে মনে হচ্ছে।

যদি সমস্ত ব্যর্থ হয়, আপনি আপনার টেবিল ভিউয়ের মার্জিনকে জোর করে চাপিয়ে দিতে পারেন:

-(void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];

    // Force your tableview margins (this may be a bad idea)
    if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {
        [self.tableView setSeparatorInset:UIEdgeInsetsZero];
    }

    if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
        [self.tableView setLayoutMargins:UIEdgeInsetsZero];
    }
} 

সুইফট 4:

func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    // Force your tableview margins (this may be a bad idea)
    if tableView.responds(to: #selector(setter: UITableView.separatorInset)) {
        tableView.separatorInset = .zero
    }
    if tableView.responds(to: #selector(setter: UITableView.layoutMargins)) {
        tableView.layoutMargins = .zero
    }
}

... এবং আপনি সেখানে যান! এটি আইওএস 7 এবং 8 এ কাজ করা উচিত।


সম্পাদনা: মোহাম্মদ সালেহ আইওএস 9-এ একটি সম্ভাব্য পরিবর্তন আমার নজরে এনেছে আপনাকে টেবিল ভিউতে সেট করার দরকার হতে cellLayoutMarginsFollowReadableWidthপারেNO আপনি insets বা মার্জিন কাস্টমাইজ করতে চান। আপনার মাইলেজ পরিবর্তিত হতে পারে, এটি খুব ভাল নথিভুক্ত করা হয় না।

এই সম্পত্তিটি কেবল আইওএস 9-তে বিদ্যমান রয়েছে তাই সেটিংয়ের আগে অবশ্যই পরীক্ষা করে দেখুন।

if([myTableView respondsToSelector:@selector(setCellLayoutMarginsFollowReadableWidth:)])
{
    myTableView.cellLayoutMarginsFollowReadableWidth = NO;
} 

সুইফট 4:

if myTableView.responds(to: #selector(setter: self.cellLayoutMarginsFollowReadableWidth)) {
    myTableView.cellLayoutMarginsFollowReadableWidth = false
}

( আইওএস 8 ইউআইটিএবল ভিউ বিভাজক ইনসেট 0 এর উপরের কোডটি কাজ করছে না )

সম্পাদনা: এখানে একটি খাঁটি ইন্টারফেস বিল্ডার পদ্ধতির:

TableViewAttributesInspector TableViewCellSizeInspector

দ্রষ্টব্য: আইওএস 11 পরিবর্তন এবং এই আচরণের অনেকগুলি সরল করে তোলে, একটি আপডেট আসন্ন ...


2
কোনও ইউআইপিপভারকন্ট্রোলারের অভ্যন্তরে টেবিলভিউগুলির জন্য, আমাকে উইলডিসপ্লেসেল-এর পরিবর্তে উপরের চিত্রের মত দুটিই করতে হয়েছিল।
ঝাং

44
আমি আরও দেখতে পেলাম যে উপরে থাকা সমস্ত কোড সত্ত্বেও আমাকে এখনও cell.preservesSuperviewLayoutMargins = NO@ বিএফএমইকের পরামর্শ অনুসারে যুক্ত করতে হয়েছিল বা কীভাবে কীটপতঙ্গ উপস্থিত হবে সেগুলি স্ক্রোল করার পরে। (ডাব্লুটিএফ ??)
অজৈবিক

আমরা যদি গ্রুপযুক্ত টেবিল ভিউতে কেবলমাত্র এক প্রকারের ঘরে মার্জিন সেট করতে চাই?
SAHM

আপনি উইলডিসপ্লেলেলে সেট করার চেষ্টা করতে পারেন এবং এটি আসলে কাজ করে কিনা তা দেখার চেষ্টা করে (আপনার ঘরের উপর একটি হ্যান্ডেল রয়েছে যাতে এটি তুচ্ছ হওয়া উচিত)। যদি এটি না হয় তবে আমাদের একটি বাগ ফাইল করতে হবে। আইএমও, সেল নির্দিষ্ট বিন্যাসের মার্জিনগুলি সম্ভব হওয়া উচিত।
সিডিস্ট্যাম্পার

2
এই ছাড়াও সঙ্গে আমার জন্য কাজ cell.preservesSuperviewLayoutMarginsআমার ডেটা উৎস পদ্ধতিতে:- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
MTS

257

ARG !!! আপনার Cellসাবক্লাসে এটি করার পরে চারপাশে খেলার পরে :

- (UIEdgeInsets)layoutMargins
{
    return UIEdgeInsetsZero;
}

বা cell.layoutMargins = UIEdgeInsetsZero;আমার জন্য এটি স্থির করে দিন।


13
এই উত্তরের প্রথম সমাধানটি আমার পক্ষে কাজ করেছিল, ২ য় উত্তর কাজ করে না।
স্পাইবার্ট

5
কেবল সেল.লেআউটআমারজিইনস = ইউআইইডিজইনসেটস জিরো ব্যবহার করবেন না ; এটি আইওএস 7.x এ ক্র্যাশ হয়ে যাবে as নির্বাচক ব্যবহার করার আগে এটি উপস্থিত রয়েছে কিনা তা যাচাই করা আরও ভাল। নীচে আমার সমাধান দেখুন।
রিকি

3
তিনি সেল.লেআউটআমার্গিনস সেট করছেন না ... আপনার যদি ইতিমধ্যে কাস্টম সেল থাকে তখন এই সমাধানটি দুর্দান্ত কাজ করে।
সুজার্ড পারফার্স

11
আইওএস 7 এ এটি দুর্দান্ত কাজ করবে, কারণ পদ্ধতিটি কল হবে না! আপনাকে সারণী দর্শনটির লেআউট মার্জিনস সেট করতে হবে, তবে এটি কার্যকর হবে না।
সিডিস্ট্যাম্পার

2
অ্যাক্সেসরকে ওভাররাইড করা আমার পক্ষে কাজ করেছিল। কিন্তু অন্যান্য সমস্ত সমাধান তা করেনি। এমনকি separatorInsetআইবি-তে কনফিগার করার কাজও হয়নি। টেবিল ভিউ ব্যাকগ্রাউন্ড রঙগুলির সাথেও একটি সমস্যা রয়েছে। এটি সত্যই অসুস্থ জিনিস।
গ্ল্যাসজ

178

সমস্যাটি সমাধানের চেষ্টা করার জন্য অন্ধভাবে চার্জ করার আগে সমস্যাটি বোঝার জন্য কিছুক্ষণ নেওয়া যাক।

ডিবাগারের চারপাশে একটি দ্রুত ঝাঁকুনি আপনাকে জানিয়ে দেবে যে বিভাজক রেখাগুলির সংক্ষিপ্তসারগুলি UITableViewCell। দেখে মনে হচ্ছে এই লাইনের বিন্যাসের জন্য সেল নিজেই ন্যায্য পরিমাণ দায়িত্ব গ্রহণ করে।

আইওএস 8 লেআউট মার্জিনের ধারণাটি প্রবর্তন করে । ডিফল্টরূপে, একটি দৃশ্যের বিন্যাসের মার্জিনগুলি 8ptচারদিকে থাকে এবং এগুলি পূর্বপুরুষের দর্শন থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয়।

সর্বোত্তম হিসাবে আমরা বলতে পারি, এর বিভাজক রেখাটি রেখে দেওয়ার সময় UITableViewCell, এটি বাম দিকের ইনসেটটি সীমাবদ্ধ করতে ব্যবহার করে, বাম-হাতের লেআউট মার্জিনকে সম্মান করতে বেছে নেয়।

সত্যিই শূন্যের কাঙ্ক্ষিত ইনসেটটি অর্জন করার জন্য, আমাদের একচেটিয়া বিষয়গুলি রেখে দেওয়া:

  • বাম বিন্যাসের মার্জিনটি এতে সেট করুন 0
  • যে উত্তরাধিকারসূত্রে প্রাপ্ত মার্জিনগুলি ওভাররাইড করে তা বন্ধ করুন

এই মত রাখুন, এটি অর্জন করা খুব সহজ একটি কাজ:

cell.layoutMargins = UIEdgeInsetsZero;
cell.preservesSuperviewLayoutMargins = NO;

বিষয়গুলি নোট করুন:

  • শুধুমাত্র এই কোড প্রতি ঘরে একবার চালানো দরকার (আপনি কেবলমাত্র সেলটির বৈশিষ্ট্যগুলি সর্বোপরি কনফিগার করছেন), এবং আপনি কখন এটি কার্যকর করতে বেছে নিচ্ছেন সে সম্পর্কে বিশেষ কিছু নেই। আপনার কাছে যা পরিষ্কার মনে হয় তা করুন।
  • দু: খজনকভাবে ইন্টারফেস বিল্ডারে কনফিগার করার জন্য সম্পত্তি দু'টিই পাওয়া যায় না তবে আপনি এর জন্য কোনও ব্যবহারকারী-সংজ্ঞায়িত রানটাইম বৈশিষ্ট্য নির্দিষ্ট করতে পারেন preservesSuperviewLayoutMargins
  • স্পষ্টতই, যদি আপনার অ্যাপ্লিকেশনটি পূর্বের ওএস রিলিজগুলিকেও টার্গেট করে, আপনি আইওএস 8 এবং তারপরের উপর চালানো পর্যন্ত উপরের কোডটি কার্যকর করা এড়াতে হবে।
  • বরং সেটিং চেয়ে preservesSuperviewLayoutMargins, আপনি করতে পারেন (যেমন টেবিল হিসাবে) আছে পূর্বপুরুষ মতামত কনফিগার0 বাম মার্জিনের , তবে আপনি পুরো শ্রেণিবিন্যাসকে নিয়ন্ত্রণ না করায় এটি অন্তর্নিহিত আরও ত্রুটি-প্রবণ বলে মনে হয়।
  • কেবল বাম মার্জিনটি সেট করা সম্ভবত সামান্য ক্লিনার হবে 0 এবং অন্যকে রেখে দেওয়ার যাবে।
  • আপনি যদি সাধারণ অতিরিক্ত UITableViewস্টাইলের টেবিলের নীচে আঁকানো "অতিরিক্ত" বিভাজকগুলির মধ্যে 0 টি ইনসেট রাখতে চান তবে আমি অনুমান করছি যে টেবিল স্তরেও একই সেটিংস নির্দিষ্টকরণের প্রয়োজন হবে (এটি চেষ্টা করে দেখেনি!)

3
ধন্যবাদ! এটি সত্যই আরও সংক্ষিপ্ত উত্তর। দুটি পদ্ধতিকে ওভাররাইড করার চেয়ে অনেক ভাল এবং এটি জোর করে চাপিয়ে দেওয়া।
লুনাকোডগার্ল

16
আইওএস 8-এ, আমার জন্য, এটি ছাড়াই কাজ করবে না[self.tableView setSeparatorInset:UIEdgeInsetsMake(0, 0, 0, 0)];
davetw12

1
আপনার আমার মতামত আছে, স্পষ্ট ব্যাখ্যার জন্য ধন্যবাদ। আমি কেবল উল্লেখ করব যে টেবিলভিউতে নিজেও লেআউটমার্জিন রয়েছে যা কিছু ক্ষেত্রে বিভাজনকারী ইনসেটের পাশাপাশি সেট করার প্রয়োজন হতে পারে।
সিডিস্ট্যাম্পার

@ davetw12 এবং @cdstamper আপনি কি এর কোনও প্রমাণ দিতে পারবেন? আমার এখন পর্যন্ত সমস্ত অন্বেষণ বলছে যে উভয়র জন্য layoutMarginsএবং preservesSuperviewLayoutMarginsঘরে সেল স্থাপন করা যা প্রয়োজনীয়। ভুডুতে বিশ্বাস করার মতো অন্য কোনও কিছু অনুভব করে।
মাইক আব্দুল্লাহ 20

3
না, এটি @ মাইক আবদুল্লাহর একধরনের ভুডু নয়। অর্ডার আপনাকে ডিফল্ট এড়াতে তার জন্য separatorInsetএকটি এর UITableViewCellআইওএস 8, আপনি সেট সেট করতে UIEdgeInsetsউভয় উপর শুন্যতে UITableViewএবং UITableViewCell। যদি আপনি উভয়টি না করেন তবে আপনার কাছে এখনও একটি বাম ইনসেট থাকবে যা শূন্যের চেয়ে বড়। আমি এটি একাধিকবার নিশ্চিত করেছি।
davetw12

58

আমি বিশ্বাস করি এটি এখানে একই প্রশ্ন যা আমি জিজ্ঞাসা করেছি: এক্সকোড 6 আইফোন সিমুলেটারের জন্য আইওএস 8 ইউআইটিএবলভিউতে পৃথককারী ইনসেট সরান

ইন iOS 8 এ সেখানে সব বস্তু থেকে উত্তরাধিকারী জন্য এক নতুন সম্পত্তি UIView। সুতরাং, সমাধান সেটSeparatorInset আইওএস 7.x এ করার সমাধানটি আইওএস 8-এর ইউআইটিবেল ভিউতে দেখা সাদা স্থানটি সরাতে সক্ষম হবে না।

নতুন সম্পত্তিটিকে " লেআউটমার্জিনস " বলা হয় ।

@property(nonatomic) UIEdgeInsets layoutMargins
Description   The default spacing to use when laying out content in the view.
Availability  iOS (8.0 and later)
Declared In   UIView.h
Reference UIView Class Reference

আইওএস 8 ইউআইটিএবলভিউ সেটসেটরেটর ইনসেট: ইউআইইডিজইনসেটস জিরো সেট লেআউটমার্জিনস: ইউআইইডিজইনসেটস জিরো

সমাধান:-

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{

    if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
        [tableView setSeparatorInset:UIEdgeInsetsZero];
    }

    if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) {
        [tableView setLayoutMargins:UIEdgeInsetsZero];
    }

   if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
        [cell setLayoutMargins:UIEdgeInsetsZero];
   }
}

যদি আপনি উপস্থিত cell.layoutMargins = UIEdgeInsetsZero;না থেকে পরীক্ষা না করে সেট করেন layoutMarginsতবে অ্যাপ্লিকেশনটি আইওএস 7.x এ ক্রাশ হবে। সুতরাং, সর্বোত্তম উপায়টি layoutMarginsআগে উপস্থিত আছে কিনা তা যাচাই করা হবে setLayoutMargins:UIEdgeInsetsZero


আইওএস 7-এ মোতায়েনের লক্ষ্য সেট করা থাকলে এই পদ্ধতির ব্যবহার কীভাবে করা যায়?
পেটার

আমি টেবিউলের জন্য কোডটি ভিডিডলয়েডে রেখেছি এবং ঠিকঠাক কাজ করছি। আমি মনে করি তাদের প্রতিবার উইলডিসপ্লেসেল () এ কল করা প্রয়োজন হবে না।
আবদুল্লাহ উমর

46

এটিকে ডিফল্ট গ্লোবাল সেটিংস হিসাবে সেট করতে আপনি একবার অ্যাপ্লিকেশন প্রারম্ভকালে (ইউআইআই লোড হওয়ার আগে) ইউআইএ চেহারাটি ব্যবহার করতে পারেন:

// iOS 7:
[[UITableView appearance] setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine];
[[UITableView appearance] setSeparatorInset:UIEdgeInsetsZero];

[[UITableViewCell appearance] setSeparatorInset:UIEdgeInsetsZero];

// iOS 8:
if ([UITableView instancesRespondToSelector:@selector(setLayoutMargins:)]) {

    [[UITableView appearance] setLayoutMargins:UIEdgeInsetsZero];
    [[UITableViewCell appearance] setLayoutMargins:UIEdgeInsetsZero];
    [[UITableViewCell appearance] setPreservesSuperviewLayoutMargins:NO];

}

এইভাবে, আপনি আপনার ইউআইভিউকন্ট্রোলারের কোডটি পরিষ্কার রাখেন এবং আপনি চাইলে সর্বদা এটি ওভাররাইড করতে পারেন।


41

আইওএস সেল এবং টেবিল দর্শনে লেআউটমার্জিনের বৈশিষ্ট্যটি উপস্থাপন করে।

এই সম্পত্তিটি আইওএস 7.0 এ উপলভ্য নয় তাই আপনাকে এটি নির্ধারণের আগে আপনার চেক করা উচিত তা নিশ্চিত করা উচিত!

যাইহোক, অ্যাপল আপনার সেলে প্রিজারভেসারউভিউ লেআউটমার্জিনস নামে একটি সম্পত্তি যুক্ত করেছে যা এটি আপনার টেবিল ভিউয়ের মার্জিন সেটিংস উত্তরাধিকারী হতে বাধা দেবে। এইভাবে, আপনার ঘরগুলি টেবিল দর্শন থেকে স্বতন্ত্রভাবে তাদের নিজস্ব মার্জিনগুলি কনফিগার করতে পারে। এটিকে ওভাররাইড হিসাবে ভাবেন।

এই সম্পত্তিটিকে প্রিজারভেসারউইউলয়েআউটমার্জিনস বলা হয় এবং এটিতে কোনও সেট করা আপনাকে আপনার নিজের ঘরের লেআউটমার্জিন সেটিং দিয়ে আপনার টেবিল ভিউয়ের লেআউটমার্গিন সেটিংসকে ওভাররাইড করতে দেয়। এটি উভয়ই সময় সাশ্রয় করে ( আপনাকে টেবিল ভিউ'র সেটিংস সংশোধন করতে হবে না ) এবং আরও সংক্ষিপ্ত। বিস্তারিত ব্যাখ্যার জন্য দয়া করে মাইক আবদুল্লাহর জবাবটি দেখুন।

দ্রষ্টব্য: এটি যথাযথ, কম অগোছালো বাস্তবায়ন, যেমনটি মাইক আবদুল্লাহর উত্তরে প্রকাশিত হয়েছে; আপনার ঘরের সংরক্ষণাগার সেটআপ করে সার্ভিউলাউআউটমার্জিনস = কোনটি নিশ্চিত করবে না যে আপনার সারণী দর্শনটি সেল সেটিংসকে ওভাররাইড করে না।

প্রথম পদক্ষেপ - আপনার ঘরের মার্জিন সেটআপ করুন:

/*
    Tells the delegate that the table view is about to draw a cell for a particular row.
*/
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,
    forRowAtIndexPath indexPath: NSIndexPath)
{
    // Remove separator inset
    if cell.respondsToSelector("setSeparatorInset:") {
        cell.separatorInset = UIEdgeInsetsZero
    }

    // Prevent the cell from inheriting the Table View's margin settings
    if cell.respondsToSelector("setPreservesSuperviewLayoutMargins:") {
        cell.preservesSuperviewLayoutMargins = false
    }

    // Explictly set your cell's layout margins
    if cell.respondsToSelector("setLayoutMargins:") {
        cell.layoutMargins = UIEdgeInsetsZero
    }
}

আপনার কোষে সংরক্ষণভারসিউউইউ লেআউটমার্জিন্স সম্পত্তি সেট করা উচিত নয় আপনার টেবিল ভিউটিকে আপনার সেল মার্জিনকে ওভাররাইড করা থেকে বিরত করা । কিছু ক্ষেত্রে, এটি সঠিকভাবে কাজ করে না বলে মনে হয়।

দ্বিতীয় পদক্ষেপ - কেবলমাত্র সমস্ত ব্যর্থ হলে, আপনি আপনার টেবিল ভিউয়ের মার্জিনকে আঘাত করতে বাধ্য করতে পারেন:

/*
    Called to notify the view controller that its view has just laid out its subviews.
*/
override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    // Force your tableview margins (this may be a bad idea)
    if self.tableView.respondsToSelector("setSeparatorInset:") {
        self.tableView.separatorInset = UIEdgeInsetsZero
    }

    if self.tableView.respondsToSelector("setLayoutMargins:") {
        self.tableView.layoutMargins = UIEdgeInsetsZero
    }
}

... এবং আপনি সেখানে যান! এটি আইওএস 8 এর পাশাপাশি আইওএস 7 এও কাজ করা উচিত।

দ্রষ্টব্য: আইওএস 8.1 এবং 7.1 ব্যবহার করে পরীক্ষিত, আমার ক্ষেত্রে আমার কেবলমাত্র এই ব্যাখ্যার প্রথম ধাপটি ব্যবহার করা দরকার।

দ্বিতীয় ধাপটি কেবলমাত্র তখনই প্রয়োজনীয় যদি আপনার রেন্ডার করা কোষগুলির নীচে অন-জনিত সেল থাকে, যেমন। টেবিলটি যদি সারণির মডেলের সারিগুলির সংখ্যার চেয়ে বড় হয়। দ্বিতীয় পদক্ষেপটি না করার ফলে বিভিন্ন বিভাজক অফসেট তৈরি হবে।


1
willDisplayCellপদ্ধতিটিতে ইতিমধ্যে আইওএস 8+ রয়েছে এবং আপনাকে পুরানো সংস্করণগুলি থেকে আর ডাকা হবে না বলে আপনার পদ্ধতিতে নির্বাচকদের পরীক্ষা করার দরকার নেই ।
রিভেরা

38

সুইফটে এটি কিছুটা বিরক্তিকর কারণ layoutMarginsএটি একটি সম্পত্তি, তাই আপনাকে গেটর এবং সেটারকে ওভাররাইড করতে হবে ।

override var layoutMargins: UIEdgeInsets {
  get { return UIEdgeInsetsZero }
  set(newVal) {}
}

এটি কার্যকরভাবে layoutMarginsপঠনযোগ্য করে তুলবে , যা আমার ক্ষেত্রে ভাল।


শুধুমাত্র এই সমাধানটি আমার পক্ষে কাজ করেছিল। এবং পদ্ধতিগুলিতে আমার অতিরিক্ত কোডগুলি যুক্ত করার দরকার নেই। আমি কাস্টম সেল ব্যবহার করেছি।
রামিস

2
স্ট্যাটিক সেলটির জন্য, ওভাররাইডিং লেআউটমার্জিনগুলি ব্যতীত, আপনার এখনও সেলটির বিভাজক স্টাইলটি "কাস্টম ইনসেটস" এ পরিবর্তন করতে হবে এবং স্টোরিবোর্ডে বাম মান "0" এ সেট করতে হবে।
hufeng03

22

আইওএস 9 এর জন্য আপনাকে যুক্ত করতে হবে:

if([myTableView respondsToSelector:@selector(setCellLayoutMarginsFollowReadableWidth:)])
{
    myTableView.cellLayoutMarginsFollowReadableWidth = NO;
} 

আরও তথ্যের জন্য দয়া করে প্রশ্ন দেখুন


12
প্রতিটি সংস্করণের জন্য কিছু কোড যুক্ত করা মজাদার যাতে প্রাথমিক উপস্থিতি একই থাকে ...
খ্রিস্টান

20

সুইফট ২.০ এক্সটেনশন

আমি কেবল টেবিলভিউ সেল বিভাজকগুলি থেকে মার্জিনগুলি সরাতে আমি তৈরি একটি এক্সটেনশন ভাগ করতে চেয়েছিলাম।

extension UITableViewCell {
    func removeMargins() {

        if self.respondsToSelector("setSeparatorInset:") {
            self.separatorInset = UIEdgeInsetsZero
        }

        if self.respondsToSelector("setPreservesSuperviewLayoutMargins:") {
            self.preservesSuperviewLayoutMargins = false
        }

        if self.respondsToSelector("setLayoutMargins:") {
            self.layoutMargins = UIEdgeInsetsZero
        }
    }
}

প্রসঙ্গে ব্যবহৃত:

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! CustomCell

    cell.removeMargins()
    return cell

15

সুইফট:

override func viewDidLoad() {
    super.viewDidLoad()

    if self.tableView.respondsToSelector("setSeparatorInset:") {
        self.tableView.separatorInset = UIEdgeInsetsZero
    }
    if self.tableView.respondsToSelector("setLayoutMargins:") {
        self.tableView.layoutMargins = UIEdgeInsetsZero
    }

    self.tableView.layoutIfNeeded()            // <--- this do the magic
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
     ...

    if cell.respondsToSelector("setSeparatorInset:") {
        cell.separatorInset = UIEdgeInsetsZero
    }
    if cell.respondsToSelector("setLayoutMargins:") {
        cell.layoutMargins = UIEdgeInsetsZero
    }

    return cell
}

11

আমি এটি করে এটি কাজ করেছিলাম:

tableView.separatorInset = UIEdgeInsetsZero;
tableView.layoutMargins = UIEdgeInsetsZero;
cell.layoutMargins = UIEdgeInsetsZero;

9

টেবিল ভিউয়ের পরিবর্তে সিডিস্ট্যাম্পার কী পরামর্শ দিয়েছিল সে সম্পর্কে, ঘরের লেআউটসুভ্যু পদ্ধতিতে লাইনের নিচে লাইন যুক্ত করা আমার পক্ষে কাজ করে।

- (void)layoutSubviews 
{
    [super layoutSubviews];

    if ([self respondsToSelector:@selector(setSeparatorInset:)])
                [self setSeparatorInset:UIEdgeInsetsZero];

        if ([self respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)])
        {
            [self setPreservesSuperviewLayoutMargins:NO];;
        }

        if ([self respondsToSelector:@selector(setLayoutMargins:)]) 
        {
            [self setLayoutMargins:UIEdgeInsetsZero];
        }
}

9

সুইফট 3.0 উদাহরণ:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    // removing seperator inset
    if cell.responds(to: #selector(setter: UITableViewCell.separatorInset)) {
        cell.separatorInset = .zero
    }
    // prevent the cell from inheriting the tableView's margin settings
    if cell.responds(to: #selector(setter: UIView.preservesSuperviewLayoutMargins)) {
        cell.preservesSuperviewLayoutMargins = false
    }
    // explicitly setting cell's layout margins
    if cell.responds(to: #selector(setter: UITableViewCell.layoutMargins)) {
        cell.layoutMargins = .zero
    }
}

9

অনেক তদন্ত পরে ...

এই জিনিস পুরোপুরি নিয়ন্ত্রণ করার একমাত্র উপায় এখানে (যা আমি খুঁজে পেতে পারি)

প্রতিটি ঘরে পৃথক পৃথক কীট এবং লেআউট মার্জিন উভয়কে সম্পূর্ণ নিয়ন্ত্রণ করতে control জন্য এই রকম কোরো willDisplayCellআপনার এর উপর পদ্ধতি UITableviewDelegate

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
    cell.layoutMargins = UIEdgeInsetsZero
    cell.contentView.layoutMargins = UIEdgeInsetsMake(0, 10, 0, 10)
    cell.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0)
}

কোষের অবজেক্টটি বিভাজক এবং অন্যান্য contentViewসমস্ত কিছু নিয়ন্ত্রণ করে। যদি আপনার বিভাজক ইনসেট স্পেসগুলি অপ্রত্যাশিত রঙে প্রদর্শিত হয় তবে এটির সমাধান হওয়া উচিত:

cell.backgroundColor = cell.contentView.backgroundColor

8

সহজ সমাধান সুইফট জন্য iOS 8 এ একটি কাস্টম সঙ্গেUITableViewCell

override func awakeFromNib() {
    super.awakeFromNib()

    self.layoutMargins = UIEdgeInsetsZero
    self.separatorInset = UIEdgeInsetsZero
}

এই ভাবে আপনি সেটিং করা হয় layoutMarginএবং separatorInsetপরিবর্তে মাত্র এক সময় প্রত্যেকের জন্য এরকম willDisplayCellউপরের হিসাবে উত্তর অধিকাংশ সুপারিশ।

আপনি যদি কোনও কাস্টম ব্যবহার করছেন তবে UITableViewCellএটি করার সঠিক জায়গা এটি। অন্যথায় আপনি এটি করা উচিত tableView:cellForRowAtIndexPath

অন্য একটি ইঙ্গিত: আপনাকে সেট করার দরকার নেই preservesSuperviewLayoutMargins = falseকারণ ডিফল্ট মান ইতিমধ্যে NO!


8

আমার জন্য সহজ লাইনটি কাজটি করেছে

cell.layoutMargins = UIEdgeInsetsZero

এটিকে সেলফোর্ডআউট ইন্ডেক্সপথ প্রতিনিধি পদ্ধতিতে ডাকা হয়। ভাল উত্তর :)
সন্তজব

7

কোড নীচে যুক্ত করুন এই প্রোগ্রামটি সমাধান করতে পারে।

আপনাকে শুভকামনা!

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

       if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
           [cell setSeparatorInset:UIEdgeInsetsZero];
       }

       if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
           [cell setLayoutMargins:UIEdgeInsetsZero];
       }

}

5

সুইফটে লুকাসজ উত্তর:

    // iOS 7:
    UITableView.appearance().separatorStyle = .SingleLine
    UITableView.appearance().separatorInset = UIEdgeInsetsZero
    UITableViewCell.appearance().separatorInset = UIEdgeInsetsZero

    // iOS 8:
    if UITableView.instancesRespondToSelector("setLayoutMargins:") {
        UITableView.appearance().layoutMargins = UIEdgeInsetsZero
        UITableViewCell.appearance().layoutMargins = UIEdgeInsetsZero
        UITableViewCell.appearance().preservesSuperviewLayoutMargins = false
    }

5

এই কোডটি আমার পক্ষে কাজ করছে, সুইফটে:

override func viewDidLoad() 
{
    super.viewDidLoad()
    ...
    if tableView.respondsToSelector("setSeparatorInset:") {
        tableView.separatorInset = UIEdgeInsetsZero
    }
}

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,forRowAtIndexPath indexPath: NSIndexPath)
{
    if cell.respondsToSelector("setSeparatorInset:") {
        cell.separatorInset.left = CGFloat(0.0)
    }
    if tableView.respondsToSelector("setLayoutMargins:") {
        tableView.layoutMargins = UIEdgeInsetsZero
    }
    if cell.respondsToSelector("setLayoutMargins:") {
        cell.layoutMargins.left = CGFloat(0.0)
    }
}

এটি আমার কাছে আপাততম পরিষ্কার মনে হয় (আপাতত), যেহেতু সমস্ত সেল / টেবিলভিউ প্রান্ত / মার্জিন সামঞ্জস্য tableView:willDisplayCell:forRowAtIndexPath:পদ্ধতিতে বিনা বেসরকারী কোডটি ক্র্যামিং না করেই করা হয় tableView:cellForRowAtIndexPath:

বিটিডব্লিউ, আমি কেবলমাত্র সেলটির বাম বিভাজক সেট করছি / ইনসেট / লেআউটমার্গিনস, কারণ এই ক্ষেত্রে আমি আমার ঘরের প্রতিবন্ধকতাগুলি সরিয়ে নিতে চাই না যা আমি আমার ঘরের মধ্যে রেখেছি।

কোডটি সুইফট ২.২ এ আপডেট হয়েছে:

 override func viewDidLoad() {
   super.viewDidLoad()       

    if tableView.respondsToSelector(Selector("setSeparatorInset:")) {
      tableView.separatorInset = UIEdgeInsetsZero
        }
    }

 override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,forRowAtIndexPath indexPath: NSIndexPath) {
        if cell.respondsToSelector(Selector("setSeparatorInset:")) {
            cell.separatorInset.left = CGFloat(0.0)
        }
        if tableView.respondsToSelector(Selector("setLayoutMargins:")) {
            tableView.layoutMargins = UIEdgeInsetsZero
        }
        if cell.respondsToSelector(Selector("setLayoutMargins:")) {
            cell.layoutMargins.left = CGFloat(0.0)
        }
    }

আপনার জন্য ঠিক কী কাজ করছে না? আইওএস 8.1 এসডিকে ইনস্টল করে আইফোন 5 সিমুলেটরটিতে এই কোডটি পরীক্ষা করেই করা হয়েছে এবং আমি যখন এই উত্তরটি পোস্ট করেছি তখন সবকিছুই যেমন ছিল তেমন। কোডটি সংকলিত এবং এক্সকোড 6.1.1 দিয়ে চালানো হয়েছিল।
ইভান

4

সর্বাধিক উত্তর বিভাজক insets দেখাচ্ছে ও লেআউট মার্জিন পদ্ধতি (অর্থাত, বিভিন্ন ওভার সেট হওয়া viewDidLayoutSubviews, willDisplayCellকোষ এবং tableviews জন্য, ইত্যাদি), কিন্তু আমি পেয়েছি মাত্র এই নির্বাণ cellForRowAtIndexPathকাজ মহান। পরিষ্কার উপায় মত মনে হচ্ছে।

// kill insets for iOS 8
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8) {
    cell.preservesSuperviewLayoutMargins = NO;
    [cell setLayoutMargins:UIEdgeInsetsZero];
}
// iOS 7 and later
if ([cell respondsToSelector:@selector(setSeparatorInset:)])
    [cell setSeparatorInset:UIEdgeInsetsZero];

4

আইওএস 8 এবং 7-এ ইউআইটিবেবলের জন্য অযাচিত প্যাডিংয়ের সমস্যাটি এড়ানোর জন্য নীচে কোড স্নিপেট ব্যবহার করুন।

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{

    if ([tableView respondsToSelector:@selector(setSeparatorInset:)])
    {
        [tableView setSeparatorInset:UIEdgeInsetsZero];
    }

    if ([tableView respondsToSelector:@selector(setLayoutMargins:)])
    {
        [tableView setLayoutMargins:UIEdgeInsetsZero];
    }

    if ([cell respondsToSelector:@selector(setLayoutMargins:)])
    {
        [cell setLayoutMargins:UIEdgeInsetsZero];
    }
}

4

আপডেট করার পরিবর্তে preservesSuperviewLayoutMarginsএবং layoutMarginsপ্রতিবার সেল স্ক্রল করে (ব্যবহার করে willDisplayCell) এর পরিবর্তে আমি একবারে এটি করার পরামর্শ দিই cellForRowAtIndexPath::

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = super.tableView(tableView, cellForRowAtIndexPath: indexPath)

    cell.preservesSuperviewLayoutMargins = false
    cell.layoutMargins = UIEdgeInsetsZero

    return cell

}

4

বিশ্বব্যাপী ইনসেটটি সরিয়ে ফেলার একটি সহজ উপায়।

ইন UITableViewCell+Extensions.swift:

import UIKit

extension UITableViewCell {

  override public var layoutMargins: UIEdgeInsets {
    get { return UIEdgeInsetsZero }
    set { }
  }

}

ইন AppDelegate application:didFinishLaunchingWithOptions::

  UITableViewCell.appearance().separatorInset = UIEdgeInsetsZero

আপনি এটিকে ভাবতে পারেন) এছাড়াও কেবল separatorInsetএক্সটেনশনে ওভাররাইড করে বা খ) layoutMarginsপরিবর্তে উপস্থিতি প্রক্সি সেট করে । কেউই কাজ করবে না। যদিও separatorInsetএটি সম্পত্তি হিসাবে চিহ্নিত করা হয়েছে, এটিকে সম্পত্তি (বা পদ্ধতি) হিসাবে ওভাররাইড করার চেষ্টাটি সংকলক ত্রুটিগুলি উত্পন্ন করে। আর এর জন্য চেহারা প্রক্সি সেটিং UITableViewCellএর layoutMargins(বা যে বিষয়টি জন্য, এছাড়াও চেহারা প্রক্সি সেটিং UITableViewএর layoutMarginsএবং separatorInset) কোনো প্রভাব নেই।


3

আইওএস 8-তে:

এটি আমার ইউআইটিএবল ভিউসেল সাবক্লাসে যুক্ত করা:

- (UIEdgeInsets)layoutMargins {
    return UIEdgeInsetsZero;
}

এবং এটি "টেবিলভিউ: সেলফোরআওএটআইডেক্সপথ" বা "টেবিলভিউ: উইলডিসপ্লেকেল":

[editCell setSeparatorInset:UIEdgeInsetsZero];

আমার জন্য কাজ।


2
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        // ... Get the cell
        cell.separatorInset = UIEdgeInsetsMake(0.f, 20.f, 0.f, [UIScreen mainScreen].bounds.size.width - 20);
        // others
        return cell;
}

যে কোনও নির্দিষ্ট কক্ষের জন্য আপনি বিভাজকটি আড়াল করতে চান।


2

3 তলায় উত্তরগুলি দেখার পরে, আমি টেবিলভিউ এবং টেবিলভিউসিলের মধ্যে বিভাজক স্থাপনের সম্পর্ক কী এবং কিছু পরীক্ষা নিরীক্ষণের চেষ্টা করেছি। আমার সিদ্ধান্তগুলি এখানে:

  1. আমরা বিবেচনা করতে পারি যে ঘরের বিভাজককে শূন্যে সেট করাতে দুটি ধাপে বিভাজককে সরানোতে হবে: প্রথম পদক্ষেপটি হ'ল ঘরের বিভাজকতাটিকে শূন্যে সেট করা । দ্বিতীয় পদক্ষেপটি হ'ল ঘরের শূন্যস্থানটি শূন্যে সেট করা ।

  2. TableView এর সেট separatorinset এবং marginlayout কোষের প্রভাবিত করতে পারে separatorinset । যাইহোক, পরীক্ষা থেকে আমি দেখি যে TableView এর separatorinset বেহুদা হবে বলে মনে হচ্ছে, TableView এর marginlayout আসলে কোষের প্রভাবিত করতে পারে marginlayout

  3. সেল এর প্রিজারভেসারসভিউলাইউআউটমার্জিনস = মিথ্যা সেট করুন, সেলগুলিতে টেবিলভিউয়ের প্রান্তিক প্রভাবটি কেটে ফেলতে পারে।

  4. সমাধানগুলির মধ্যে একটি:

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell = UITableViewCell()
    
        cell.preservesSuperviewLayoutMargins = false
        cell.separatorInset = UIEdgeInsetsZero
        cell.layoutMargins = UIEdgeInsetsZero
    
        return cell
    }

2

এটা আমার সমাধান। এটি কাস্টম সেল সাবক্লাসে প্রযোজ্য, কেবল তাদের উভয়কে সাবক্লাসে যুক্ত করুন।

  1. - (UIEdgeInsets)layoutMargins {    
        return UIEdgeInsetsMake(0, 10, 0, 10);
    }

2।

self.separatorInset = UIEdgeInsetsMake(0, 10, 0, 10);

এবং এটি সুবিধাজনক যে আপনি নিজের ডিজাইনারকে আপনার জন্য একটি আঁকতে না বলে বিভাজনের অবস্থানটি কাস্টমাইজ করতে পারেন ..........


1

সর্বাধিক ভোট দেওয়া উত্তরের চেয়ে আরও কমপ্যাক্ট উপায়ে ...

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

    if ([cell respondsToSelector:@selector(setSeparatorInset:)] && [cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)] && [cell respondsToSelector:@selector(setLayoutMargins:)]) {
         [cell setSeparatorInset:UIEdgeInsetsZero];
         [cell setPreservesSuperviewLayoutMargins:NO];
         [cell setLayoutMargins:UIEdgeInsetsZero];
    }

}


1

এই স্নিপেট যোগ করা, সুইফটে সরল মার্জিত আইওএস 8 এ আমার জন্য কাজ করে :)

    // tableview single line
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
    cell.preservesSuperviewLayoutMargins = false
    cell.layoutMargins = UIEdgeInsetsZero
}

1

এটি আইওএস 8 এবং আইওএস 9 এ আমার জন্য পুরোপুরি কাজ করেছে।

জন্য obj-সি

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  { 
        if ([tableView respondsToSelector:@selector(setSeparatorInset:)])
        {
            [tableView setSeparatorInset:UIEdgeInsetsZero];
        }

        if ([tableView respondsToSelector:@selector(setLayoutMargins:)])
        {
            [tableView setLayoutMargins:UIEdgeInsetsZero];
        }

        if ([cell respondsToSelector:@selector(setLayoutMargins:)])
        {
            [cell setLayoutMargins:UIEdgeInsetsZero];
        }
         return cell;
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.