मैं UITableView में सेक्शन हेडर का रंग कैसे बदल सकता हूं?
EDIT : डीजे-एस द्वारा दिए गए जवाब को आईओएस 6 और इसके बाद के संस्करण के लिए माना जाना चाहिए। स्वीकृत उत्तर पुराना है।
मैं UITableView में सेक्शन हेडर का रंग कैसे बदल सकता हूं?
EDIT : डीजे-एस द्वारा दिए गए जवाब को आईओएस 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:
, यह सिर्फ सफेद है। क्या मैं कुछ गलत कर रहा हूं?
यह एक पुराना प्रश्न है, लेकिन मुझे लगता है कि उत्तर को अद्यतन करने की आवश्यकता है।
इस पद्धति में अपने स्वयं के कस्टम दृश्य को परिभाषित करना और बनाना शामिल नहीं है। IOS 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]];
यह समाधान iOS 6.0 के बाद से बढ़िया काम करता है।
निम्नलिखित समाधान iOS 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()
}
प्रतिनिधि से इस कोड को जोड़ना न भूलें या आपका दृश्य कट जाएगा या आपके दृश्य / लेबल की ऊंचाई के सापेक्ष कुछ मामलों में तालिका के पीछे दिखाई देगा।
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 30;
}
यदि आप एक कस्टम दृश्य नहीं बनाना चाहते हैं, तो आप इस तरह रंग भी बदल सकते हैं (iOS 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
UITableView सेक्शन के हैडर व्यू के लिए बैकग्राउंड कलर , टेक्स्ट लेबल कलर और फॉन्ट बदलने के लिए, बस 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;
}
IOS8 (बीटा) और स्विफ्ट के लिए RGB रंग चुनें जिसे आप चाहते हैं और यह प्रयास करें:
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
}
("ओवरराइड" वहाँ है क्योंकि मैं अपनी परियोजना में एक सामान्य UIViewController के बजाय UITableViewController का उपयोग कर रहा हूं, लेकिन यह अनुभाग हेडर रंग बदलने के लिए अनिवार्य नहीं है)
आपके हेडर का टेक्स्ट अभी भी देखा जाएगा। ध्यान दें कि आपको अनुभाग शीर्ष लेख ऊंचाई समायोजित करने की आवश्यकता होगी।
शुभ लाभ।
स्विफ्ट 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
}
iOS 8+
func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
tableView.tableHeaderView?.backgroundColor = UIColor.blue()
}
स्विफ्ट 3 का उपयोग करके @Dj एस जवाब पर आधारित, यह iOS 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
}
मेरे पास आईओएस 7.x में स्थिर टेबल व्यू कोशिकाओं का उपयोग करने वाला एक प्रोजेक्ट है। willDisplayHeaderView फायर नहीं करता है। हालाँकि, यह विधि ठीक काम करती है:
- (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
}
IOS 7.0.4 में मैंने XIB के साथ एक कस्टम हेडर बनाया है। काम करने से पहले यहाँ कुछ भी उल्लेख नहीं है। इसके साथ काम करने के लिए UITableViewHeaderFooterView का उपवर्ग होना चाहिए था dequeueReusableHeaderFooterViewWithIdentifier:
और ऐसा लगता है कि पृष्ठभूमि के रंग को लेकर वर्ग बहुत जिद्दी है। इसलिए अंत में मैंने एक कस्टम नाम के साथ एक UIView (आप इसे या तो कोड या आईबी के साथ कर सकते हैं) जोड़ दिया, और फिर इसे बैकग्राउंडर प्रॉपर्टी सेट किया। LayoutSubviews में: मैंने उस दृश्य के फ्रेम को सीमा पर सेट किया है। यह आईओएस 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;
}
हेडर दृश्य की परत का रंग बदलें
- (UIView *) tableView: (UITableView *) tableView व्यूफोरहेन्डरइन्फेक्शन: (NSInteger) सेक्शन { UIView * हैडर व्यू = [[[यूआईवाईवाईवी आबंटित] initWithFrame: CGRectMake (0, 0, tableView.bounds.size.width, 30)] autorelease]; शीर्ष लेख। परतदार.ग्राउंडरकलर = [UIColor clearColor] .CGColor }
अगर किसी को तेज चाहिए तो शीर्षक रखता है:
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
}
मुझे कंसोल लॉग के माध्यम से Xcode से संदेश मिला
[TableView] UITableViewHeaderFooterView पर पृष्ठभूमि का रंग निर्धारित किया गया है। कृपया अपनी इच्छित पृष्ठभूमि रंग के बजाय पृष्ठभूमि दृश्य गुण के साथ एक कस्टम UIView सेट करें।
तब मैं सिर्फ एक नया UIView बनाता हूं और उसे HeaderView की पृष्ठभूमि के रूप में रखता हूं। एक अच्छा समाधान नहीं है लेकिन यह आसान है जैसा कि Xcode ने कहा।
मेरे मामले में, इसने इस तरह काम किया:
let headerIdentifier = "HeaderIdentifier"
let header = self.tableView.dequeueReusableHeaderFooterView(withIdentifier: headerIdentifier)
header.contentView.backgroundColor = UIColor.white
RubyMotion / RedPotion के साथ, इसे अपनी टेबलस्क्रीन में पेस्ट करें:
def tableView(_, willDisplayHeaderView: view, forSection: section)
view.textLabel.textColor = rmq.color.your_text_color
view.contentView.backgroundColor = rmq.color.your_background_color
end
एक जादू की तरह काम करता है!
स्विफ्ट 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
वैकल्पिक है, लेकिन तब भी जब यह वहां है, यह लागू किए बिना नहीं जा रहा हैwillDisplayHeaderView