আমি কীভাবে ইউআইটিএবলভিউতে বিভাগের শিরোনামের রঙ পরিবর্তন করতে পারি?
সম্পাদনা : ডিজে-এস দ্বারা প্রদত্ত উত্তরগুলি আইওএস 6 এবং ততোধিকের জন্য বিবেচনা করা উচিত। গৃহীত উত্তর পুরানো।
আমি কীভাবে ইউআইটিএবলভিউতে বিভাগের শিরোনামের রঙ পরিবর্তন করতে পারি?
সম্পাদনা : ডিজে-এস দ্বারা প্রদত্ত উত্তরগুলি আইওএস 6 এবং ততোধিকের জন্য বিবেচনা করা উচিত। গৃহীত উত্তর পুরানো।
উত্তর:
আশা করি UITableViewDelegate
প্রোটোকল থেকে এই পদ্ধতিটি আপনাকে শুরু করবে:
উদ্দেশ্য গ:
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)] autorelease];
if (section == integerRepresentingYourSectionOfInterest)
[headerView setBackgroundColor:[UIColor redColor]];
else
[headerView setBackgroundColor:[UIColor clearColor]];
return headerView;
}
সুইফট:
func tableView(_ tableView: UITableView!, viewForHeaderInSection section: Int) -> UIView!
{
let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.bounds.size.width, height: 30))
if (section == integerRepresentingYourSectionOfInterest) {
headerView.backgroundColor = UIColor.redColor()
} else {
headerView.backgroundColor = UIColor.clearColor()
}
return headerView
}
আপডেট হওয়া 2017:
সুইফট 3:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
{
let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.bounds.size.width, height: 30))
if (section == integerRepresentingYourSectionOfInterest) {
headerView.backgroundColor = UIColor.red
} else {
headerView.backgroundColor = UIColor.clear
}
return headerView
}
আপনি [UIColor redColor]
যেটি UIColor
পছন্দ করুন তা দিয়ে প্রতিস্থাপন করুন । আপনি এর মাত্রা সামঞ্জস্য করতে ইচ্ছুক হতে পারে headerView
।
[UIColor xxxColor]
যখন আমি তাই ব্যবহার আমি থেকে ফটোশপ (পেতে পারেন বেশী মত একটি কাস্টম রঙ চেষ্টা অবশ্য UIColor red:green:blue:alpha:
, এটা ঠিক সাদা অ্যাম আমি কিছু ভুল করছেন।?
এটি একটি পুরানো প্রশ্ন, তবে আমি মনে করি উত্তরটি আপডেট করা দরকার।
এই পদ্ধতিতে আপনার নিজস্ব কাস্টম ভিউ সংজ্ঞায়িত করা এবং তৈরি করা জড়িত না। আইওএস 6 এবং এর উপরে, আপনি সহজেই সংজ্ঞাটি দিয়ে পটভূমির রঙ এবং পাঠ্যের রঙ পরিবর্তন করতে পারেন
-(void)tableView:(UITableView *)tableView
willDisplayHeaderView:(UIView *)view
forSection:(NSInteger)section
বিভাগ প্রতিনিধি পদ্ধতি
উদাহরণ স্বরূপ:
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
// Background color
view.tintColor = [UIColor blackColor];
// Text Color
UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
[header.textLabel setTextColor:[UIColor whiteColor]];
// Another way to set the background color
// Note: does not preserve gradient effect of original header
// header.contentView.backgroundColor = [UIColor blackColor];
}
আমার পোস্টটি এখানে নেওয়া হয়েছে: https://happyteamlabs.com/blog/ios-how-to-customize-table-view-header-and-footer-colors/
সুইফট 3/4
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int){
view.tintColor = UIColor.red
let header = view as! UITableViewHeaderFooterView
header.textLabel?.textColor = UIColor.white
}
header.contentView.backgroundColor = [UIColor blackColor];
বিকল্পটি আপনাকে একটি অস্বচ্ছ শিরোনাম দেবে
এখানে পাঠ্যের রঙ কীভাবে পরিবর্তন করা যায় তা এখানে।
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(10, 3, tableView.bounds.size.width - 10, 18)] autorelease];
label.text = @"Section Header Text Here";
label.textColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.75];
label.backgroundColor = [UIColor clearColor];
[headerView addSubview:label];
আপনি যদি কাস্টম রঙের সাথে শিরোনাম চান তবে এটি করতে পারেন:
[[UITableViewHeaderFooterView appearance] setTintColor:[UIColor redColor]];
এই সমাধানটি আইওএস 6.0 থেকে দুর্দান্ত কাজ করে।
নিম্নলিখিত সমাধানটি আইওএস 8+ এর সাথে সুইফট 1.2 এর জন্য কাজ করে
override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
// This changes the header background
view.tintColor = UIColor.blueColor()
// Gets the header view as a UITableViewHeaderFooterView and changes the text colour
var headerView: UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView
headerView.textLabel.textColor = UIColor.redColor()
}
এই প্রতিনিধিটির কাছ থেকে কোডের টুকরোটি যুক্ত করতে ভুলবেন না বা আপনার ভিউ / লেবেলের উচ্চতার তুলনায় আপনার ভিউটি কেটে দেওয়া বা টেবিলের পিছনে উপস্থিত হবে behind
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 30;
}
আপনি যদি কোনও কাস্টম ভিউ তৈরি করতে না চান তবে আপনি এর মতো রঙও পরিবর্তন করতে পারেন (আইওএস 6 প্রয়োজন):
-(void) tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section {
if ([view isKindOfClass: [UITableViewHeaderFooterView class]]) {
UITableViewHeaderFooterView* castView = (UITableViewHeaderFooterView*) view;
UIView* content = castView.contentView;
UIColor* color = [UIColor colorWithWhite:0.85 alpha:1.]; // substitute your color here
content.backgroundColor = color;
}
}
বিভাগের ক্ষেত্রের ব্যাকগ্রাউন্ড এবং পাঠ্য রঙ সেট করুন: (আপনাকে ধন্যবাদ William Jockusch
এবং Dj S
)
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
if ([view isKindOfClass: [UITableViewHeaderFooterView class]]) {
UITableViewHeaderFooterView* castView = (UITableViewHeaderFooterView*) view;
castView.contentView.backgroundColor = [UIColor grayColor];
[castView.textLabel setTextColor:[UIColor grayColor]];
}
}
সুইফট 4
পটভূমির রঙ পরিবর্তন করতে , পাঠ্য লেবেল রঙ এবং কোনও ইউআইটিএবলভি বিভাগের শিরোনাম দর্শনটির জন্য ফন্ট , কেবল willDisplayHeaderView
আপনার টেবিল দর্শনের জন্য কেবল ওভাররাইড করুন:
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
let header = view as! UITableViewHeaderFooterView
header.backgroundView?.backgroundColor = .white
header.textLabel?.textColor = .black
header.textLabel?.font = UIFont(name: "Helvetica-Bold", size: 14)
}
এটি আমার জন্য পুরোপুরি কাজ করেন; আশা করি এটি আপনাকেও সাহায্য করবে!
হেডার ভিউতে কীভাবে একটি চিত্র যুক্ত করা যায় তা এখানে:
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)] autorelease];
UIImageView *headerImage = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"top-gery-bar.png"]] autorelease];
headerImage.frame = CGRectMake(0, 0, tableView.bounds.size.width, 30);
[headerView addSubview:headerImage];
return headerView;
}
আইওএস 8 (বিটা) এবং সুইফ্টের জন্য আপনি যে আরজিবি রঙ চান তা চয়ন করুন এবং এটি ব্যবহার করে দেখুন:
override func tableView(tableView: UITableView!, viewForHeaderInSection section: Int) -> UIView! {
var header :UITableViewHeaderFooterView = UITableViewHeaderFooterView()
header.contentView.backgroundColor = UIColor(red: 254.0/255.0, green: 190.0/255.0, blue: 127.0/255.0, alpha: 1)
return header
}
("ওভাররাইড" সেখানে রয়েছে যেহেতু আমি আমার প্রকল্পের সাধারণ ইউআইভিউউকন্ট্রোলারের পরিবর্তে ইউআইটিএবলভিউ কনট্রোলার ব্যবহার করছি, তবে বিভাগের শিরোনামের রঙ পরিবর্তন করার জন্য এটি বাধ্যতামূলক নয়)
আপনার শিরোনামের পাঠ্যটি এখনও দেখা যাবে। মনে রাখবেন যে আপনাকে বিভাগের শিরোনামের উচ্চতা সামঞ্জস্য করতে হবে।
শুভকামনা
সুইফট 2
আমি একটি যুক্ত ঝাপসা প্রভাব (যা সত্যিই দুর্দান্ত) এর সাথে বিভাগের পটভূমির রঙ সফলভাবে পরিবর্তন করতে সক্ষম হয়েছি। বিভাগের পটভূমি সহজেই পরিবর্তন করতে:
তারপরে অস্পষ্ট প্রভাবের জন্য কোডটিতে যুক্ত করুন:
override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
// This is the blur effect
let blurEffect = UIBlurEffect(style: .Light)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
// Gets the header view as a UITableViewHeaderFooterView and changes the text colour and adds above blur effect
let headerView: UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView
headerView.textLabel!.textColor = UIColor.darkGrayColor()
headerView.textLabel!.font = UIFont(name: "HelveticaNeue-Light", size: 13)
headerView.tintColor = .groupTableViewBackgroundColor()
headerView.backgroundView = blurEffectView
}
আমি এর উত্তর জানি, সেক্ষেত্রে সুইফটে নিম্নলিখিতটি ব্যবহার করুন
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let tableViewWidth = self.tableView.bounds
let headerView = UIView(frame: CGRectMake(0, 0, tableViewWidth.size.width, self.tableView.sectionHeaderHeight))
headerView.backgroundColor = UIColor.greenColor()
return headerView
}
আইওএস 8+
func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
tableView.tableHeaderView?.backgroundColor = UIColor.blue()
}
@ ডিজে এস উত্তরের উপর ভিত্তি করে, সুইফট 3 ব্যবহার করে এটি আইওএস 10 এ দুর্দান্ত কাজ করে।
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
// Background color
view.tintColor = UIColor.black
// Text Color
let headerView = view as! UITableViewHeaderFooterView
headerView.textLabel?.textColor = UIColor.white
}
আমার আইওএস x.x এ স্ট্যাটিক টেবিল ভিউ সেলগুলি ব্যবহার করে একটি প্রকল্প আছে। উইলডিসপ্লেহিডারভিউ আগুন দেয় না। তবে, এই পদ্ধতিটি ঠিক কাজ করে:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
NSLog(@"%s", __FUNCTION__);
CGRect headerFrame = CGRectMake(x, y, w, h);
UIView *headerView = [[UIView alloc] initWithFrame:headerFrame];
headerView.backgroundColor = [UIColor blackColor];
-(void) tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view
forSection:(NSInteger)section
{
if ([view isKindOfClass: [UITableViewHeaderFooterView class]])
{
UITableViewHeaderFooterView *castView = (UITableViewHeaderFooterView *) view;
UIView *content = castView.contentView;
UIColor *color = [UIColor whiteColor]; // substitute your color here
content.backgroundColor = color;
[castView.textLabel setTextColor:[UIColor blackColor]];
}
}
আমি মনে করি এই কোডটি এতটা খারাপ নয়।
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = tableView.dequeueReusableHeaderFooterViewWithIdentifier(MyHeaderView.reuseIdentifier) as MyHeaderView
let backgroundView = UIView()
backgroundView.backgroundColor = UIColor.whiteColor()
headerView.backgroundView = backgroundView
headerView.textLabel.text = "hello"
return headerView
}
সুইফট 4 এটি খুব সহজ করে তোলে। এটি কেবল আপনার শ্রেণিতে যুক্ত করুন এবং প্রয়োজনীয় রঙটি সেট করুন।
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
view.backgroundColor = UIColor(red: 0.094, green: 0.239, blue: 0.424, alpha: 1.0)
}
বা যদি একটি সাধারণ রঙ
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
view.backgroundColor = UIColor.white
}
সুইফট 5-এর জন্য আপডেট হয়েছে
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
view.tintColor = UIColor(red: 0.094, green: 0.239, blue: 0.424, alpha: 1.0)
}
বা যদি একটি সাধারণ রঙ
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
view.tintColor = UIColor.white
}
আইওএস 7.0.4 এ আমি নিজের এক্সআইবি দিয়ে একটি কাস্টম শিরোনাম তৈরি করেছি। এখানে কাজ করার আগে এখানে কিছুই উল্লেখ করা হয়নি। এটির সাথে কাজ করার জন্য এটি ইউআইটিবেবল ভিউহাইডারফুটারভিউয়ের সাবক্লাস হতে হয়েছিল dequeueReusableHeaderFooterViewWithIdentifier:
এবং মনে হয় যে ব্যাকগ্রাউন্ডের রঙ সম্পর্কিত ক্লাসটি খুব জেদী। সুতরাং অবশেষে আমি কাস্টমব্যাকগ্রুডভিউ নামের সাথে একটি ইউআইভিউ (আপনি কোড বা আইবি দিয়ে এটি করতে পারলেন) যুক্ত করেছিলাম এবং তারপরে এটির পটভূমির বর্ণ সম্পত্তি সেট করেছিলাম। লেআউটসুবভিউগুলিতে: আমি সেই দৃশ্যের ফ্রেমটিকে সীমানায় সেট করেছি। এটি আইওএস 7 এর সাথে কাজ করে এবং কোনও গ্লিট দেয় না।
// in MyTableHeaderView.xib drop an UIView at top of the first child of the owner
// first child becomes contentView
// in MyTableHeaderView.h
@property (nonatomic, weak) IBOutlet UIView * customBackgroundView;
// in MyTableHeaderView.m
-(void)layoutSubviews;
{
[super layoutSubviews];
self.customBackgroundView.frame = self.bounds;
}
// if you don't have XIB / use IB, put in the initializer:
-(id)initWithReuseIdentifier:(NSString *)reuseIdentifier
{
...
UIView * customBackgroundView = [[UIView alloc] init];
[self.contentView addSubview:customBackgroundView];
_customBackgroundView = customBackgroundView;
...
}
// in MyTableViewController.m
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
MyTableHeaderView * header = [self.tableView
dequeueReusableHeaderFooterViewWithIdentifier:@"MyTableHeaderView"];
header.customBackgroundView.backgroundColor = [UIColor redColor];
return header;
}
কেবল শিরোনাম দর্শনের স্তরটির রঙ পরিবর্তন করুন
- (ইউআইভিউ *) টেবিল ভিউ: (ইউআইটিএলভিউ *) টেবিলভিউ ভিউফোর্ড হিডারআইনসেকশন: (এনএসআইন্টার) বিভাগ { ইউআইভিউ * হেডারভিউ = [[[ইউআইভিউ বরাদ্দ] initWithFrame: সিজিআরেক্টমেক (0, 0, টেবিলভিউ.বাউন্ডস.উইথ, 30)] অটোরেলিজ]; হেডারভিউ.লেয়ার.ব্যাকগ্রাউন্ড কালার = [ইউআইকলার ক্লিয়ার কালার] .সিজি কালার }
কারও যদি দ্রুত প্রয়োজন হয়, শিরোনাম রাখুন:
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = UIView(frame: CGRect(x: 0,y: 0,width: self.tableView.frame.width, height: 30))
view.backgroundColor = UIColor.redColor()
let label = UILabel(frame: CGRect(x: 15,y: 5,width: 200,height: 25))
label.text = self.tableView(tableView, titleForHeaderInSection: section)
view.addSubview(label)
return view
}
আমি কনসোল লগের মাধ্যমে এক্সকোড থেকে বার্তা পেয়েছি
[টেবিলভিউ] ইউআইটিএবলভিউহাইডারফুটারভিউতে ব্যাকগ্রাউন্ড রঙ সেট করা হ্রাস করা হয়েছে। পরিবর্তে ব্যাকগ্রাউন্ডভিউ বৈশিষ্ট্যে আপনার পছন্দসই পটভূমির রঙের সাথে একটি কাস্টম ইউআইভিউ সেট করুন।
তারপরে আমি কেবল একটি নতুন ইউআইভিউ তৈরি করেছি এবং এটিকে হেডারভিউয়ের পটভূমি হিসাবে রেখেছি। কোনও ভাল সমাধান নয় তবে এক্সকোড যেমন বলেছে তেমন সহজ।
আমার ক্ষেত্রে এটি এটির মতো কাজ করেছে:
let headerIdentifier = "HeaderIdentifier"
let header = self.tableView.dequeueReusableHeaderFooterView(withIdentifier: headerIdentifier)
header.contentView.backgroundColor = UIColor.white
সুইফ্ট 5 + এর জন্য
ইন willDisplayHeaderView
পদ্ধতি
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
//For Header Background Color
view.tintColor = .black
// For Header Text Color
let header = view as! UITableHeaderFooterView
header.textLabel?.textColor = .white
}
এটি তোমাকে সাহায্য করবে বলে আশা করি :]
যদিও func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int)
পাশাপাশি কাজ করবে, আপনি অন্য প্রতিনিধি পদ্ধতিটি প্রয়োগ না করে এটিকে অর্জন করতে পারেন। আপনার func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
পদ্ধতিতে, আপনি যা ব্যবহার করছেন view.contentView.backgroundColor = UIColor.white
তার পরিবর্তে ব্যবহার করতে পারেন view.backgroundView?.backgroundColor = UIColor.white
। (আমি জানি এটি backgroundView
alচ্ছিক, তবে এটি উপস্থিত থাকা সত্ত্বেও, এটি বাস্তবায়ন না করে জাগ্রত হয় নাwillDisplayHeaderView