दिलचस्प पोस्ट
नकल उपयोगकर्ता इनपुट के साथ JUnit परीक्षण कैमरा एक्सपोजर और शटर स्पीड के लिए IOS 6 नए एपीआई एक्सेस करना मेम्क्पी के लिए बढ़ी हुई आरईपी MOVSB क्या मैं सभी वस्तुओं की एक संकलन-सूची सूची प्राप्त कर सकता हूं जो स्काला में मुहरबंद माता-पिता से प्राप्त होती है? jQuery.वही – जब सभी डिफरेड अब 'अनसुलझे' (या तो हल हो या अस्वीकार किए गए) के लिए कॉलबैक हैं? सी में% n प्रारूप विनिर्देशक का क्या उपयोग है? PHP regex में बैकस्लैश से बचने का सही तरीका है? jQuery – यह कई $ (दस्तावेज़) के लिए खराब है .ready (function () {}); मैं डिवि कंटेनर में फिट करने के लिए एक छवि को कैसे बदलूंगा? Android प्रक्रिया शेड्यूलिंग AsyncTask में progressDialog जावा गतिशील बाइंडिंग और विधि ओवरराइडिंग वहाँ ms-access में एक group_concat फ़ंक्शन है? Handlebars.js वस्तु वस्तु के बजाय वस्तु वस्तु किबााना + लोचदार खोज का उपयोग करके किसी क्षेत्र की अनन्य गणना कैसे प्राप्त करें

समूहित तालिका दृश्य सेल के पृष्ठभूमि / सीमा रंग को कैसे अनुकूलित करें?

मैं एक समूहीकृत शैली UITableView की पृष्ठभूमि और सीमा रंग दोनों को कस्टमाइज़ करना चाहता हूं।

मैं निम्न का उपयोग कर पृष्ठभूमि रंग को कस्टमाइज़ करने में सक्षम था:

tableView.contentView.backgroundColor = [UIColor greenColor]; 

लेकिन सीमा रंग अभी भी कुछ है जो मुझे नहीं पता कि कैसे बदलना है।

मैं समूह-स्टाइल तालिका दृश्य के इन दो पहलुओं को कैसे कस्टमाइज़ कर सकता हूं?

वेब के समाधान से एकत्रित समाधान "समूहित तालिका दृश्य सेल के पृष्ठभूमि / सीमा रंग को कैसे अनुकूलित करें?"

अद्यतन: आईफोन ओएस 3.0 में और बाद में [UIColor colorWithPatternImage:] पास अब एक backgroundColor [UIColor colorWithPatternImage:] प्रॉपर्टी है जो यह वास्तव में आसान बनाती है (विशेषकर [UIColor colorWithPatternImage:] initializer के साथ)। लेकिन मैं उस प्रश्न के 2.0 संस्करण को छोड़ दूंगा जो इसकी आवश्यकता है …


यह वास्तव में होना चाहिए जितना कठिन होना चाहिए। यहां बताया गया है कि जब मैंने ऐसा किया था, तो मैंने ऐसा कैसे किया:

आपको UITableViewCell की पृष्ठभूमि दृश्य प्रॉपर्टी को कस्टम UIView में सेट करना होगा जो उपयुक्त रंगों में सीमा और पृष्ठभूमि को खुद खींचती है। यह दृश्य एक अलग खंड में सीमाओं को आकर्षित करने में सक्षम होना चाहिए, एक अनुभाग में पहले सेल के शीर्ष पर गोल किया गया है, एक अनुभाग में अंतिम कक्ष के तल पर गोल है, एक अनुभाग के बीच में कोशिकाओं के लिए कोई गोलाकार कोनों नहीं है , और उन सभी कोनों पर गोल किया, जिनमें एक कोशिका होती है।

दुर्भाग्य से मैं यह समझ नहीं सका कि यह मोड स्वचालित रूप से कैसे सेट किया गया है, इसलिए मुझे इसे यूआईटीबलव्यूएडेटाटॉरस के -सेलफोर-राइटअटइंडएपपाथ विधि में सेट करना पड़ा।

यह एक असली पिटा है लेकिन मैंने ऐप्पल इंजीनियरों से इसकी पुष्टि की है कि यह वर्तमान में एकमात्र तरीका है।

अद्यतन यहाँ कस्टम बीजी दृश्य के लिए कोड है। एक ड्राइंग बग है जो गोल कोनों को थोड़ा अजीब लग रहा है, लेकिन हम एक अलग डिज़ाइन में ले जाया गया और कस्टम पृष्ठभूमि को खत्म करने से पहले मुझे इसे ठीक करने का मौका मिला। फिर भी यह आपके लिए बहुत उपयोगी होगा:

 // // CustomCellBackgroundView.h // // Created by Mike Akers on 11/21/08. // Copyright 2008 __MyCompanyName__. All rights reserved. // #import <UIKit/UIKit.h> typedef enum { CustomCellBackgroundViewPositionTop, CustomCellBackgroundViewPositionMiddle, CustomCellBackgroundViewPositionBottom, CustomCellBackgroundViewPositionSingle } CustomCellBackgroundViewPosition; @interface CustomCellBackgroundView : UIView { UIColor *borderColor; UIColor *fillColor; CustomCellBackgroundViewPosition position; } @property(nonatomic, retain) UIColor *borderColor, *fillColor; @property(nonatomic) CustomCellBackgroundViewPosition position; @end // // CustomCellBackgroundView.m // // Created by Mike Akers on 11/21/08. // Copyright 2008 __MyCompanyName__. All rights reserved. // #import "CustomCellBackgroundView.h" static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth,float ovalHeight); @implementation CustomCellBackgroundView @synthesize borderColor, fillColor, position; - (BOOL) isOpaque { return NO; } - (id)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { // Initialization code } return self; } - (void)drawRect:(CGRect)rect { // Drawing code CGContextRef c = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(c, [fillColor CGColor]); CGContextSetStrokeColorWithColor(c, [borderColor CGColor]); if (position == CustomCellBackgroundViewPositionTop) { CGContextFillRect(c, CGRectMake(0.0f, rect.size.height - 10.0f, rect.size.width, 10.0f)); CGContextBeginPath(c); CGContextMoveToPoint(c, 0.0f, rect.size.height - 10.0f); CGContextAddLineToPoint(c, 0.0f, rect.size.height); CGContextAddLineToPoint(c, rect.size.width, rect.size.height); CGContextAddLineToPoint(c, rect.size.width, rect.size.height - 10.0f); CGContextStrokePath(c); CGContextClipToRect(c, CGRectMake(0.0f, 0.0f, rect.size.width, rect.size.height - 10.0f)); } else if (position == CustomCellBackgroundViewPositionBottom) { CGContextFillRect(c, CGRectMake(0.0f, 0.0f, rect.size.width, 10.0f)); CGContextBeginPath(c); CGContextMoveToPoint(c, 0.0f, 10.0f); CGContextAddLineToPoint(c, 0.0f, 0.0f); CGContextStrokePath(c); CGContextBeginPath(c); CGContextMoveToPoint(c, rect.size.width, 0.0f); CGContextAddLineToPoint(c, rect.size.width, 10.0f); CGContextStrokePath(c); CGContextClipToRect(c, CGRectMake(0.0f, 10.0f, rect.size.width, rect.size.height)); } else if (position == CustomCellBackgroundViewPositionMiddle) { CGContextFillRect(c, rect); CGContextBeginPath(c); CGContextMoveToPoint(c, 0.0f, 0.0f); CGContextAddLineToPoint(c, 0.0f, rect.size.height); CGContextAddLineToPoint(c, rect.size.width, rect.size.height); CGContextAddLineToPoint(c, rect.size.width, 0.0f); CGContextStrokePath(c); return; // no need to bother drawing rounded corners, so we return } // At this point the clip rect is set to only draw the appropriate // corners, so we fill and stroke a rounded rect taking the entire rect CGContextBeginPath(c); addRoundedRectToPath(c, rect, 10.0f, 10.0f); CGContextFillPath(c); CGContextSetLineWidth(c, 1); CGContextBeginPath(c); addRoundedRectToPath(c, rect, 10.0f, 10.0f); CGContextStrokePath(c); } - (void)dealloc { [borderColor release]; [fillColor release]; [super dealloc]; } @end static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth,float ovalHeight) { float fw, fh; if (ovalWidth == 0 || ovalHeight == 0) {// 1 CGContextAddRect(context, rect); return; } CGContextSaveGState(context);// 2 CGContextTranslateCTM (context, CGRectGetMinX(rect),// 3 CGRectGetMinY(rect)); CGContextScaleCTM (context, ovalWidth, ovalHeight);// 4 fw = CGRectGetWidth (rect) / ovalWidth;// 5 fh = CGRectGetHeight (rect) / ovalHeight;// 6 CGContextMoveToPoint(context, fw, fh/2); // 7 CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1);// 8 CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1);// 9 CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1);// 10 CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); // 11 CGContextClosePath(context);// 12 CGContextRestoreGState(context);// 13 } 

मुझे पता है कि जवाब समूहबद्ध तालिका कोशिकाओं को बदलने से संबंधित हैं, लेकिन यदि कोई भी तालिकादृश्य का पृष्ठभूमि रंग बदलना चाहता है:

आपको केवल यह निर्धारित करने की आवश्यकता नहीं है:

 tableview.backgroundColor = color; 

आपको पृष्ठभूमि के दृश्य को बदलने या छुटकारा पाने की आवश्यकता है:

 tableview.backgroundView = nil; 

सबसे पहले इस कोड के लिए धन्यवाद मैंने इस समारोह में ड्राइंग के कोने की समस्या को दूर करने के लिए कुछ ड्राइंग परिवर्तन किए हैं।

 -(void)drawRect:(CGRect)rect { // Drawing code CGContextRef c = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(c, [fillColor CGColor]); CGContextSetStrokeColorWithColor(c, [borderColor CGColor]); CGContextSetLineWidth(c, 2); if (position == CustomCellBackgroundViewPositionTop) { CGFloat minx = CGRectGetMinX(rect) , midx = CGRectGetMidX(rect), maxx = CGRectGetMaxX(rect) ; CGFloat miny = CGRectGetMinY(rect) , maxy = CGRectGetMaxY(rect) ; minx = minx + 1; miny = miny + 1; maxx = maxx - 1; maxy = maxy ; CGContextMoveToPoint(c, minx, maxy); CGContextAddArcToPoint(c, minx, miny, midx, miny, ROUND_SIZE); CGContextAddArcToPoint(c, maxx, miny, maxx, maxy, ROUND_SIZE); CGContextAddLineToPoint(c, maxx, maxy); // Close the path CGContextClosePath(c); // Fill & stroke the path CGContextDrawPath(c, kCGPathFillStroke); return; } else if (position == CustomCellBackgroundViewPositionBottom) { CGFloat minx = CGRectGetMinX(rect) , midx = CGRectGetMidX(rect), maxx = CGRectGetMaxX(rect) ; CGFloat miny = CGRectGetMinY(rect) , maxy = CGRectGetMaxY(rect) ; minx = minx + 1; miny = miny ; maxx = maxx - 1; maxy = maxy - 1; CGContextMoveToPoint(c, minx, miny); CGContextAddArcToPoint(c, minx, maxy, midx, maxy, ROUND_SIZE); CGContextAddArcToPoint(c, maxx, maxy, maxx, miny, ROUND_SIZE); CGContextAddLineToPoint(c, maxx, miny); // Close the path CGContextClosePath(c); // Fill & stroke the path CGContextDrawPath(c, kCGPathFillStroke); return; } else if (position == CustomCellBackgroundViewPositionMiddle) { CGFloat minx = CGRectGetMinX(rect) , maxx = CGRectGetMaxX(rect) ; CGFloat miny = CGRectGetMinY(rect) , maxy = CGRectGetMaxY(rect) ; minx = minx + 1; miny = miny ; maxx = maxx - 1; maxy = maxy ; CGContextMoveToPoint(c, minx, miny); CGContextAddLineToPoint(c, maxx, miny); CGContextAddLineToPoint(c, maxx, maxy); CGContextAddLineToPoint(c, minx, maxy); CGContextClosePath(c); // Fill & stroke the path CGContextDrawPath(c, kCGPathFillStroke); return; } } 

कोड के लिए धन्यवाद, यह वही है जो मैं देख रहा था। मैंने कस्टम कोडबैक के दृश्य को लागू करने के लिए, विमल के कोड में निम्न कोड भी जोड़ लिया है। (सभी चार कोने गोल हैं।)

 else if (position == CustomCellBackgroundViewPositionSingle) { CGFloat minx = CGRectGetMinX(rect) , midx = CGRectGetMidX(rect), maxx = CGRectGetMaxX(rect) ; CGFloat miny = CGRectGetMinY(rect) , midy = CGRectGetMidY(rect) , maxy = CGRectGetMaxY(rect) ; minx = minx + 1; miny = miny + 1; maxx = maxx - 1; maxy = maxy - 1; CGContextMoveToPoint(c, minx, midy); CGContextAddArcToPoint(c, minx, miny, midx, miny, ROUND_SIZE); CGContextAddArcToPoint(c, maxx, miny, maxx, midy, ROUND_SIZE); CGContextAddArcToPoint(c, maxx, maxy, midx, maxy, ROUND_SIZE); CGContextAddArcToPoint(c, minx, maxy, minx, midy, ROUND_SIZE); // Close the path CGContextClosePath(c); // Fill & stroke the path CGContextDrawPath(c, kCGPathFillStroke); return; } 

माईक एकर्स से उपरोक्त कस्टमसेलबेकैगदृश्य कोड के साथ मैं एक बात में चला गया जो दूसरों के लिए उपयोगी हो सकता है:

cell.backgroundView कोशिकाओं का पुन: उपयोग होने पर स्वचालित रूप से दोबारा नहीं मिल cell.backgroundView है, और पृष्ठभूमि में बदल जाता है cell.backgroundView की स्थिति फिर से उपयोग की जाने वाली कोशिकाओं को प्रभावित नहीं करती है इसका मतलब है कि लंबी तालिकाओं में गलत तरीके से चित्रित किया जाएगा। cell.backgroundViews उनके पदों को देखते हुए

हर बार जब कोई पंक्ति प्रदर्शित की जाती है तो एक नया पृष्ठभूमि [cell.backgroundView setNeedsDisplay] बनाने के बिना इसे ठीक करने के लिए, अपने -[UITableViewController tableView:cellForRowAtIndexPath:] के अंत में [cell.backgroundView setNeedsDisplay] पर कॉल करें। या अधिक पुन: प्रयोज्य समाधान के लिए, कस्टम सेल्बैकमांडव्यूव की स्थिति सेटर को एक [self setNeedsDisplay] शामिल करने के लिए ओवरराइड करें

इस सुपर सहायक पोस्ट के लिए धन्यवाद अगर किसी को भी वहाँ (जैसे मेरे!) आईबी में छवियों / पाठ / अन्य सामग्री के माध्यम से इसे अनुकूलित करने के एवज में पूरी तरह से एक रिक्त सेल पृष्ठभूमि करना चाहता है और यह समझ नहीं पा रहा है कि कैसे गूंगा बॉर्डर / पैडिंग / पृष्ठभूमि भले ही आप इसे आईबी में साफ़ करने के लिए सेट करें … यहाँ कोड है जो मैंने उस चाल को इस्तेमाल किया था!

 - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath { static NSString *cellId = @"cellId"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: cellId]; if (cell == nil) { [[NSBundle mainBundle] loadNibNamed:@"EditTableViewCell" owner:self options:nil]; cell = cellIBOutlet; self.cellIBOutlet = nil; } cell.backgroundView = [[[UIView alloc] initWithFrame: CGRectZero] autorelease]; [cell.backgroundView setNeedsDisplay]; ... any other cell customizations ... return cell; } 

उम्मीद है कि किसी और को मदद मिलेगी! एक जादू की तरह काम करने लगता है

अपने कोड को पोस्ट करने वाले सभी को बहुत धन्यवाद यह बहुत उपयोगी है

मुझे समूहीकृत तालिका दृश्य कोशिकाओं के लिए हाइलाइट रंग बदलने के लिए एक समान समाधान मिला है। मूल रूप से UITableViewCell का चयनित पृष्ठभूमिमदृश्य (पृष्ठभूमि वीज़ नहीं)। जो भी आईफोन ओएस 3.0 पर भी इस पिटा समाधान की आवश्यकता है, जहां तक ​​मैं बता सकता हूं …

नीचे दिए गए कोड में एक ठोस रंग की जगह ढाल के साथ हाइलाइट प्रदान करने के लिए परिवर्तन हैं। साथ ही सीमा रेंडरिंग भी निकाल दी गई है। का आनंद लें।

 // // CSCustomCellBackgroundView.h // #import <UIKit/UIKit.h> typedef enum { CustomCellBackgroundViewPositionTop, CustomCellBackgroundViewPositionMiddle, CustomCellBackgroundViewPositionBottom, CustomCellBackgroundViewPositionSingle, CustomCellBackgroundViewPositionPlain } CustomCellBackgroundViewPosition; @interface CSCustomCellBackgroundView : UIView { CustomCellBackgroundViewPosition position; CGGradientRef gradient; } @property(nonatomic) CustomCellBackgroundViewPosition position; @end // // CSCustomCellBackgroundView.m // #import "CSCustomCellBackgroundView.h" #define ROUND_SIZE 10 static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth,float ovalHeight); @implementation CSCustomCellBackgroundView @synthesize position; - (BOOL) isOpaque { return NO; } - (id)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { // Initialization code const float* topCol = CGColorGetComponents([[UIColor redColor] CGColor]); const float* bottomCol = CGColorGetComponents([[UIColor blueColor] CGColor]); CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB(); /* CGFloat colors[] = { 5.0 / 255.0, 140.0 / 255.0, 245.0 / 255.0, 1.00, 1.0 / 255.0, 93.0 / 255.0, 230.0 / 255.0, 1.00, };*/ CGFloat colors[]= { topCol[0], topCol[1], topCol[2], topCol[3], bottomCol[0], bottomCol[1], bottomCol[2], bottomCol[3] }; gradient = CGGradientCreateWithColorComponents(rgb, colors, NULL, sizeof(colors)/(sizeof(colors[0])*4)); CGColorSpaceRelease(rgb); } return self; } -(void)drawRect:(CGRect)rect { // Drawing code CGContextRef c = UIGraphicsGetCurrentContext(); if (position == CustomCellBackgroundViewPositionTop) { CGFloat minx = CGRectGetMinX(rect) , midx = CGRectGetMidX(rect), maxx = CGRectGetMaxX(rect) ; CGFloat miny = CGRectGetMinY(rect) , maxy = CGRectGetMaxY(rect) ; minx = minx + 1; miny = miny + 1; maxx = maxx - 1; maxy = maxy ; CGContextMoveToPoint(c, minx, maxy); CGContextAddArcToPoint(c, minx, miny, midx, miny, ROUND_SIZE); CGContextAddArcToPoint(c, maxx, miny, maxx, maxy, ROUND_SIZE); CGContextAddLineToPoint(c, maxx, maxy); // Close the path CGContextClosePath(c); CGContextSaveGState(c); CGContextClip(c); CGContextDrawLinearGradient(c, gradient, CGPointMake(minx,miny), CGPointMake(minx,maxy), kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation); CGContextRestoreGState(c); return; } else if (position == CustomCellBackgroundViewPositionBottom) { CGFloat minx = CGRectGetMinX(rect) , midx = CGRectGetMidX(rect), maxx = CGRectGetMaxX(rect) ; CGFloat miny = CGRectGetMinY(rect) , maxy = CGRectGetMaxY(rect) ; minx = minx + 1; miny = miny + 1; maxx = maxx - 1; maxy = maxy - 1; CGContextMoveToPoint(c, minx, miny); CGContextAddArcToPoint(c, minx, maxy, midx, maxy, ROUND_SIZE); CGContextAddArcToPoint(c, maxx, maxy, maxx, miny, ROUND_SIZE); CGContextAddLineToPoint(c, maxx, miny); // Close the path CGContextClosePath(c); CGContextSaveGState(c); CGContextClip(c); CGContextDrawLinearGradient(c, gradient, CGPointMake(minx,miny), CGPointMake(minx,maxy), kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation); CGContextRestoreGState(c); return; } else if (position == CustomCellBackgroundViewPositionMiddle) { CGFloat minx = CGRectGetMinX(rect) , maxx = CGRectGetMaxX(rect) ; CGFloat miny = CGRectGetMinY(rect) , maxy = CGRectGetMaxY(rect) ; minx = minx + 1; miny = miny + 1; maxx = maxx - 1; maxy = maxy ; CGContextMoveToPoint(c, minx, miny); CGContextAddLineToPoint(c, maxx, miny); CGContextAddLineToPoint(c, maxx, maxy); CGContextAddLineToPoint(c, minx, maxy); // Close the path CGContextClosePath(c); CGContextSaveGState(c); CGContextClip(c); CGContextDrawLinearGradient(c, gradient, CGPointMake(minx,miny), CGPointMake(minx,maxy), kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation); CGContextRestoreGState(c); return; } else if (position == CustomCellBackgroundViewPositionSingle) { CGFloat minx = CGRectGetMinX(rect) , midx = CGRectGetMidX(rect), maxx = CGRectGetMaxX(rect) ; CGFloat miny = CGRectGetMinY(rect) , midy = CGRectGetMidY(rect) , maxy = CGRectGetMaxY(rect) ; minx = minx + 1; miny = miny + 1; maxx = maxx - 1; maxy = maxy - 1; CGContextMoveToPoint(c, minx, midy); CGContextAddArcToPoint(c, minx, miny, midx, miny, ROUND_SIZE); CGContextAddArcToPoint(c, maxx, miny, maxx, midy, ROUND_SIZE); CGContextAddArcToPoint(c, maxx, maxy, midx, maxy, ROUND_SIZE); CGContextAddArcToPoint(c, minx, maxy, minx, midy, ROUND_SIZE); // Close the path CGContextClosePath(c); CGContextSaveGState(c); CGContextClip(c); CGContextDrawLinearGradient(c, gradient, CGPointMake(minx,miny), CGPointMake(minx,maxy), kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation); CGContextRestoreGState(c); return; } else if (position == CustomCellBackgroundViewPositionPlain) { CGFloat minx = CGRectGetMinX(rect); CGFloat miny = CGRectGetMinY(rect), maxy = CGRectGetMaxY(rect) ; CGContextDrawLinearGradient(c, gradient, CGPointMake(minx,miny), CGPointMake(minx,maxy), kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation); return; } } - (void)dealloc { CGGradientRelease(gradient); [super dealloc]; } - (void) setPosition:(CustomCellBackgroundViewPosition)inPosition { if(position != inPosition) { position = inPosition; [self setNeedsDisplay]; } } @end static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth,float ovalHeight) { float fw, fh; if (ovalWidth == 0 || ovalHeight == 0) {// 1 CGContextAddRect(context, rect); return; } CGContextSaveGState(context);// 2 CGContextTranslateCTM (context, CGRectGetMinX(rect),// 3 CGRectGetMinY(rect)); CGContextScaleCTM (context, ovalWidth, ovalHeight);// 4 fw = CGRectGetWidth (rect) / ovalWidth;// 5 fh = CGRectGetHeight (rect) / ovalHeight;// 6 CGContextMoveToPoint(context, fw, fh/2); // 7 CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1);// 8 CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1);// 9 CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1);// 10 CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); // 11 CGContextClosePath(context);// 12 CGContextRestoreGState(context);// 13 } 

आप सेटिंग द्वारा सीमा रंग को अनुकूलित कर सकते हैं

 tableView.separatorColor 

तालिका दृश्य सीमा रंग बदलने के लिए:

एच में:

 #import <QuartzCore/QuartzCore.h> 

में एम।

 tableView.layer.masksToBounds=YES; tableView.layer.borderWidth = 1.0f; tableView.layer.borderColor = [UIColor whiteColor].CGColor; 

यह कार्य आसानी से प्रीटीकिट का उपयोग कर 5 लिंक्स कोड जोड़कर किया जा सकता है। यदि आप nib फ़ाइलें या storyboard उपयोग करते हैं, तो भी इस छोटे से हैक को लागू करने के लिए मत भूलना। जब आप इस दृष्टिकोण का उपयोग करते हैं, तो आपको अपने सेल को PrettyTableViewCell से उपवर्ग करना चाहिए:

 #import <PrettyKit/PrettyKit.h> @class RRSearchHistoryItem; @interface RRSearchHistoryCell : PrettyTableViewCell 

यह मेरे cellForRowAtIndexPath का उदाहरण है:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellIdentifier = @"RRSearchHistoryCell"; RRSearchHistoryCell *cell = (RRSearchHistoryCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier]; if ( cell == nil ) { NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"RRSearchHistoryCell" owner:self options:nil]; cell = topLevelObjects[0]; cell.gradientStartColor = RGB(0xffffff); cell.gradientEndColor = RGB(0xf3f3f3); } RRSearchHistoryItem *item = _historyTableData[indexPath.row]; [cell setHistoryItem:item]; [cell prepareForTableView:tableView indexPath:indexPath]; return cell; } 

मुझे इसके साथ समस्याएं आ रही हैं और कई संयोजनों की कोशिश की है जैसा मैंने पाया है कि कुछ कोशिकाओं के लिए यह ठीक काम करता है, लेकिन दूसरों के लिए नहीं।

अजीब तरह से मुझे पता चला कि यह सेल सेट करना संभव है। बैकग्राउंड रंग लाइट ग्रे रंग करने के लिए और सभी पूरी तरह से काम करता है – लेकिन नीली रंग ने मुझे बाहरी किनारों को अद्यतन नहीं करने की समस्याएं उत्पन्न कीं।

जब तक कि हरे रंग का उपयोग करना वास्तव में महत्वपूर्ण नहीं है- शायद आप यह कोशिश कर सकते हैं हो सकता है कि यह एक विशेषता है कि लोगों को केवल ग्रे रंग का उपयोग करने के लिए एक कक्ष का चयन करने के लिए चुना जाना चाहिए।