উত্তর:
আপনার ঘরের কনটেন্ট ভিউটি আপনার রঙের জন্য ব্যাকগ্রাউন্ড কালার সেট করতে হবে। যদি আপনি আনুষাঙ্গিকগুলি (যেমন প্রকাশের তীরগুলি ইত্যাদি) ব্যবহার করেন তবে সেগুলি সাদা হিসাবে দেখাবে, সুতরাং আপনার সেগুলির কাস্টম সংস্করণগুলি রোল করার প্রয়োজন হতে পারে।
UITableViewCellAccessoryCheckmark
উদাহরণস্বরূপ, কীভাবে নিজস্ব রোল করবেন তার কোনও লিঙ্ক ? ধন্যবাদ।
cell.textLabel.backgroundColor = [UIColor clearColor];
এই সমস্যাটি সমাধান করার জন্য আমি এখানে এসেছি সবচেয়ে দক্ষ উপায়, উইলডিসপ্লে সেল প্রতিনিধি পদ্ধতিটি ব্যবহার করুন (এটি সেল.স্টেক্সটেলবেল.টেক্সট এবং / অথবা সেল.ডেটেলটেক্সটেলবেল.স্টেক্স ব্যবহার করার সময় পাঠ্য লেবেলের পটভূমির জন্য সাদা রঙের যত্ন নেয় takes ):
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { ... }
এই প্রতিনিধি পদ্ধতিটি যখন কক্ষের রঙ বলা হয় আপনি যখন ব্যবহার করবেন তখন যেমন টেবিল ভিউয়ের চেয়ে ঘরের মাধ্যমে রঙটি নিয়ন্ত্রণ করা হয়:
- (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath { ... }
সুতরাং সেল প্রতিনিধি পদ্ধতির শৃঙ্খলার অভ্যন্তরে ঘরের বিকল্প রঙগুলিতে নিম্নলিখিত কোড যুক্ত করুন বা কেবল সারণীর সমস্ত কক্ষকে একই রঙ করতে ফাংশন কলটি ব্যবহার করুন।
if (indexPath.row % 2)
{
[cell setBackgroundColor:[UIColor colorWithRed:.8 green:.8 blue:1 alpha:1]];
}
else [cell setBackgroundColor:[UIColor clearColor]];
এই সমাধানটি আমার পরিস্থিতিতে ভাল কাজ করেছে ...
cell.backgroundColor = UIColor.clearColor
এটি সত্যই সহজ, যেহেতু ওএস 3.0 কেবল উইলডিসপ্লেকেল পদ্ধতিতে ঘরের পটভূমির রঙ সেট করে। আপনার অবশ্যই সেল ফরফরআউটইন্ডেক্সপ্যাথে রঙ সেট করতে হবে না।
এটি সরল এবং গোষ্ঠীযুক্ত উভয় শৈলীর জন্য কাজ করে:
কোড:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell.backgroundColor = [UIColor redColor];
}
PS: এখানে উইলডিসপ্লেসেল এর জন্য ডকুমেন্টেশন এক্সট্র্যাক্ট:
"একটি সারণী দর্শনটি তার ডেলিগেটকে এই বার্তাটি প্রেরণ করে সেলটি একটি সারি আঁকার জন্য ব্যবহার করার ঠিক আগে, প্রতিনিধিটিকে সেল বস্তুটি প্রদর্শিত হওয়ার আগে কাস্টমাইজ করার অনুমতি দেয় This এই পদ্ধতিটি প্রতিনিধি দ্বারা রাষ্ট্র-ভিত্তিক বৈশিষ্ট্যগুলিকে পূর্বের দ্বারা সেট করা ওভাররাইড করার সুযোগ দেয় সারণী দর্শন যেমন নির্বাচন এবং পটভূমির রঙ। প্রতিনিধি ফিরে আসার পরে টেবিল ভিউটি কেবলমাত্র আলফা এবং ফ্রেম বৈশিষ্ট্যগুলি সেট করে এবং তারপরে সারিগুলি অ্যানিমেটেড করার সময় কেবল সেগুলি স্লাইড বা আউট স্লাইড হয়। "
কলোনেল থেকে এই পোস্টে এই তথ্যটি পেয়েছি । তাকে ধন্যবাদ!
আমি এখনও অবধি সবচেয়ে ভাল পন্থা খুঁজে পেয়েছি হ'ল ঘরের একটি ব্যাকগ্রাউন্ড ভিউ সেট করা এবং সেল সাবভিউগুলির পরিষ্কার পটভূমি। অবশ্যই, এটি কেবল সূচিযুক্ত শৈলীর সাথে টেবিলগুলিতে দুর্দান্ত দেখাচ্ছে, আনুষাঙ্গিকগুলি সহ বা না ছাড়াই without
এখানে একটি নমুনা দেওয়া হয়েছে যেখানে ঘরের পটভূমি হলুদ পেন্ট করা হয়েছে:
UIView* backgroundView = [ [ [ UIView alloc ] initWithFrame:CGRectZero ] autorelease ];
backgroundView.backgroundColor = [ UIColor yellowColor ];
cell.backgroundView = backgroundView;
for ( UIView* view in cell.contentView.subviews )
{
view.backgroundColor = [ UIColor clearColor ];
}
এটি কেবল আপনার মধ্যে ইউআইটিএবলভিউ প্রতিনিধি শ্রেণীর ফাইল (। মি) রাখুন:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
UIColor *color = ((indexPath.row % 2) == 0) ? [UIColor colorWithRed:255.0/255 green:255.0/255 blue:145.0/255 alpha:1] : [UIColor clearColor];
cell.backgroundColor = color;
}
আমি সেবার সাথে সম্মতি জানালাম, আমি আমার বিকল্প সারি রঙটি রোফোর্ডইন্ডেক্সপথ প্রতিনিধি পদ্ধতিতে সেট করার চেষ্টা করেছি তবে ৩.২ এবং ৪.২-এর মধ্যে অসামঞ্জস্যপূর্ণ ফলাফল পাচ্ছি। নিম্নলিখিত আমার জন্য দুর্দান্ত কাজ করেছে।
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if ((indexPath.row % 2) == 1) {
cell.backgroundColor = UIColorFromRGB(0xEDEDED);
cell.textLabel.backgroundColor = UIColorFromRGB(0xEDEDED);
cell.selectionStyle = UITableViewCellSelectionStyleGray;
}
else
{
cell.backgroundColor = [UIColor whiteColor];
cell.selectionStyle = UITableViewCellSelectionStyleGray;
}
}
সমস্ত বিভিন্ন সমাধান চেষ্টা করার পরে, নিম্নলিখিত পদ্ধতিটি সর্বাধিক মার্জিত একটি। নিম্নলিখিত প্রতিনিধি পদ্ধতিতে রঙ পরিবর্তন করুন:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if (...){
cell.backgroundColor = [UIColor blueColor];
} else {
cell.backgroundColor = [UIColor whiteColor];
}
}
ভ্লাদো এগ্রিগোরভের কিছু ভাল পরামর্শ রয়েছে - সর্বোত্তম উপায় হ'ল ব্যাকগ্রাউন্ডভিউ তৈরি করা এবং সেই রঙ দেওয়া, ক্লিয়ার কালারের সাথে সমস্ত কিছু সেট করে। এছাড়াও, আমি মনে করি যে উপায়টি সঠিকভাবে রঙ পরিষ্কার করার একমাত্র উপায় (তার নমুনা চেষ্টা করুন - তবে 'হলুদ রঙের পরিবর্তে' ক্লিয়ারার কালার 'সেট করুন), যা আমি যা করার চেষ্টা করছিলাম।
টেবিল ভিউ সেলটির পটভূমি কাস্টমাইজ করা অবশেষে এবং "সমস্ত বা কিছুই নয়" পদ্ধতির হয়ে ওঠে। কোনও বিষয়বস্তু ঘরের পটভূমির জন্য যে রঙ বা চিত্র ব্যবহার করা হয়েছে তা অদ্ভুত দেখাচ্ছে না এমন পরিবর্তন করা খুব কঠিন।
কারণটি হল যে ঘরটি প্রকৃতপক্ষে দেখার প্রস্থকে প্রশস্ত করে। বৃত্তাকার কোণগুলি এর অঙ্কন শৈলীর মাত্র একটি অংশ এবং সামগ্রী ভিউ এই অঞ্চলে বসে।
আপনি যদি সামগ্রীর ঘরের রঙ পরিবর্তন করেন তবে আপনার কোণে সাদা বিট দৃশ্যমান হবে। আপনি যদি পুরো ঘরের রঙ পরিবর্তন করেন তবে আপনার দর্শন প্রস্থের প্রসারিত রঙের একটি ব্লক থাকবে।
আপনি অবশ্যই কোনও ঘর কাস্টমাইজ করতে পারেন তবে এটি প্রথমে আপনি যতটা ভাবতে পারেন তেমন সহজ নয়।
N.Berendt এর উত্তরটি প্রসারিত করার জন্য - আপনি যদি প্রকৃত সেল ডেটা অবজেক্টের কোনও রাজ্যের উপর ভিত্তি করে সেল রঙ নির্ধারণ করতে চান, আপনি যখন টেবিল সেলের জন্য থাকা অন্যান্য তথ্য কনফিগার করছেন, যা সাধারণত আপনি যখন থাকেন সেলফোর্ডআউটইন্ডেক্সপথ পদ্ধতিতে, আপনি কনটেন্ট ভিউ ব্যাকগ্রাউন্ড কালার থেকে সেল ব্যাকগ্রাউন্ড কালার সেট করতে উইল ডিসপ্লেকেল পদ্ধতিটি ওভাররাইড করে এটি করতে পারেন - এটি প্রকাশের বোতামের ব্যাকগ্রাউন্ড ইত্যাদির ইস্যুটির আশেপাশে আসে ঠিক না তবে এটি আপনাকে সেলফোর্ডআউটইন্টেক্সপথ পদ্ধতিতে রঙ নিয়ন্ত্রণ করতে দেয় যেখানে আপনি আপনার অন্যান্য ঘর কাস্টমাইজেশন সমস্ত করছেন।
সুতরাং: আপনি যদি এই পদ্ধতিটি আপনার টেবিল দর্শনের প্রতিনিধিটিতে যুক্ত করেন:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell.backgroundColor = cell.contentView.backgroundColor;
}
তারপরে আপনার সেলফোরআউএন্টআইডেক্সপথ পদ্ধতিতে আপনি এটি করতে পারেন:
if (myCellDataObject.hasSomeStateThatMeansItShouldShowAsBlue) {
cell.contentView.backgroundColor = [UIColor blueColor];
}
এটি উইলডিসপ্লেলে পদ্ধতিতে আপনার ডেটা অবজেক্টগুলি পুনরুদ্ধার করে এবং আপনার টেবিলের সেলটি টেলরিং / কাস্টমাইজেশন করার দুটি জায়গার সংরক্ষণও করে - সমস্ত কাস্টমাইজেশন সেলফোর্ডআউটইন্টেক্সপথ পদ্ধতিতে যেতে পারে।
ফটোশপ বা জিম্পের সাথে ব্যাকগ্রাউন্ড হিসাবে ব্যবহার করতে একটি চিত্র তৈরি করুন এবং এটি মাইমেজটির নাম দিন। তারপরে, আপনার টেবিলভিউ নিয়ন্ত্রণকারী শ্রেণিতে এই পদ্ধতিটি যুক্ত করুন:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
UIImage *cellImage = [UIImage imageNamed:@"myimage.png"];//myimage is a 20x50 px with gradient color created with gimp
UIImageView *cellView = [[UIImageView alloc] initWithImage:cellImage];
cellView.contentMode = UIContentViewModeScaleToFill;
cell.backgroundView = cellView;
//set the background label to clear
cell.titleLabel.backgroundColor= [UIColor clearColor];
}
আপনি যদি ইউটিআইটিভিউকে অ্যাট্রিবিউট ইন্সপেক্টরকে কাস্টম হিসাবে সেট করে থাকেন তবে এটিও কাজ করবে।
আমার সমাধানটি সেলফোর্ডআউটইন্টেক্সপথ ইভেন্টে নিম্নলিখিত কোড যুক্ত করা হল:
UIView *solidColor = [cell viewWithTag:100];
if (!solidColor) {
solidColor = [[UIView alloc] initWithFrame:cell.bounds];
solidColor.tag = 100; //Big tag to access the view afterwards
[cell addSubview:solidColor];
[cell sendSubviewToBack:solidColor];
[solidColor release];
}
solidColor.backgroundColor = [UIColor colorWithRed:254.0/255.0
green:233.0/255.0
blue:233.0/255.0
alpha:1.0];
এমনকি প্রকাশের বোতামগুলির সাথেও, যে কোনও পরিস্থিতিতে কাজ করে এবং আপনার যুক্তিগুলির জন্য সেলওয়ার্লআউটইন্ডেক্সপ্যাথে সেলওয়্যারশো ইভেন্টের চেয়ে আমার মনে হয় কোষের রঙিন স্থিতিতে অভিনয় করা ভাল।
সাবক্লাস ইউআইটিএবলভিউ সেল এবং প্রয়োগের ক্ষেত্রে এটি যুক্ত করুন:
-(void)layoutSubviews
{
[super layoutSubviews];
self.backgroundColor = [UIColor blueColor];
}
UIView *bg = [[UIView alloc] initWithFrame:cell.frame];
bg.backgroundColor = [UIColor colorWithRed:175.0/255.0 green:220.0/255.0 blue:186.0/255.0 alpha:1];
cell.backgroundView = bg;
[bg release];
এটি সর্বশেষতম এক্সকোডে কাজ করবে।
-(UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath {
cell.backgroundColor = [UIColor grayColor];
}
এটা চেষ্টা কর:
- (void)tableView:(UITableView *)tableView1 willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
[cell setBackgroundColor:[UIColor clearColor]];
tableView1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"Cream.jpg"]];
}