使ç¨ä¸éæè§å¾ã
ä¸éæçè§å¾å¯ä»¥æ大å°æé«æ¸²æçé度ãå æ¤å¦éå¿
è¦ï¼å¯ä»¥å°table cellåå
¶åè§å¾çopaqueå±æ§è®¾ä¸ºYESï¼é»è®¤å¼ï¼ã
å
¶ä¸çç¹ä¾å
æ¬èæ¯è²ï¼å®çalphaå¼åºè¯¥ä¸º1ï¼ä¾å¦ä¸è¦ä½¿ç¨clearColorï¼ï¼å¾åçalphaå¼ä¹åºè¯¥ä¸º1ï¼æè
å¨ç»å¾æ¶è®¾ä¸ºä¸éæã
ä¸è¦éå¤å建ä¸å¿
è¦çtable cellã
åé¢è¯´äºï¼UITableViewåªéè¦ä¸å±å¹çUITableViewCell对象å³å¯ãå æ¤å¨cellä¸å¯è§æ¶ï¼å¯ä»¥å°å
¶ç¼åèµ·æ¥ï¼èå¨éè¦æ¶ç»§ç»ä½¿ç¨å®å³å¯ã
èUITableViewä¹æä¾äºè¿ç§æºå¶ï¼åªéè¦ç®åå°è®¾ç½®ä¸ä¸ªidentifierå³å¯ï¼
static NSString *CellIdentifier = @"xxx";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
å¼å¾ä¸æçæ¯ï¼cell被éç¨æ¶ï¼å®å
é¨ç»å¶çå
容并ä¸ä¼è¢«èªå¨æ¸
é¤ï¼å æ¤ä½ å¯è½éè¦è°ç¨setNeedsDisplayInRect:æsetNeedsDisplayæ¹æ³ã
æ¤ å¤ï¼å¨æ·»å table cellçæ¶åï¼å¦æä¸éè¦å¨ç»ææï¼æ好ä¸è¦ä½¿ç¨insertRowsAtIndexPaths:withRowAnimation:æ¹æ³ï¼èæ¯ç´æ¥è° ç¨reloadDataæ¹æ³ãå 为åè
ä¼å¯¹ææindexPathsè°ç¨tableView:cellForRowAtIndexPath:æ¹æ³ï¼å³ä¾¿è¯¥ cell并ä¸éè¦æ¾ç¤ºï¼ä¸ç¥éæ¯ä¸æ¯bugï¼ï¼è¿å°±å¯è½å建大éå¤ä½çcellãå误ï¼åªæ¯å¨æ¨¡æå¨ä¸æµè¯å¦æ¤ï¼çæºè°è¯æ¶æ²¡æè¿ç§bugã
åå°è§å¾çæ°ç®ã
UITableViewCellå
å«äºtextLabelãdetailTextLabelåimageViewçviewï¼èä½ è¿å¯ä»¥èªå®ä¹ä¸äºè§å¾æ¾å¨å®çcontentViewéãç¶èviewæ¯å¾å¤§ç对象ï¼å建å®ä¼æ¶èè¾å¤èµæºï¼å¹¶ä¸ä¹å½±å渲æçæ§è½ã
å¦æä½ çtable cellå
å«å¾çï¼ä¸æ°ç®è¾å¤ï¼ä½¿ç¨é»è®¤çUITableViewCellä¼é常影åæ§è½ãå¥æªçæ¯ï¼ä½¿ç¨èªå®ä¹çviewï¼èéé¢å®ä¹çviewï¼ææ¾ä¼å¿«äºã
å½ç¶ï¼æä½³ç解å³åæ³è¿æ¯ç»§æ¿UITableViewCellï¼å¹¶å¨å
¶drawRect:ä¸èªè¡ç»å¶ï¼
- (void)drawRect:(CGRect)rect {
if (image) {
[image drawAtPoint:imagePoint];
self.image = nil;
} else {
[placeHolder drawAtPoint:imagePoint];
}
[text drawInRect:textRect withFont:font lineBreakMode:UILineBreakModeTailTruncation];
}
ä¸è¿è¿æ ·ä¸æ¥ï¼ä½ ä¼åç°éä¸ä¸è¡åï¼è¿ä¸ªcellå°±åèäºï¼å
¶ä¸çå
容就被æ¡ä½äºãæç®åçæ¹æ³å°±æ¯å°cellçselectionStyleå±æ§è®¾ä¸ºUITableViewCellSelectionStyleNoneï¼è¿æ ·å°±ä¸ä¼è¢«é«äº®äºã
æ¤ å¤è¿å¯ä»¥å建CALayerï¼å°å
容ç»å¶å°layerä¸ï¼ç¶å对cellçcontentView.layerè°ç¨addSublayer:æ¹æ³ãè¿ä¸ªä¾ åä¸ï¼layer并ä¸ä¼æ¾èå½±åæ§è½ï¼ä½å¦ælayeréæï¼æè
æåè§ãåå½¢çææï¼å°±ä¼å½±åå°ç»å¶é度äºã解å³åæ³å¯åè§åé¢çé¢æ¸²æå¾åã
ä¸è¦åå¤ä½çç»å¶å·¥ä½ã
å¨å®ç°drawRect:çæ¶åï¼å®çrectåæ°å°±æ¯éè¦ç»å¶çåºåï¼è¿ä¸ªåºåä¹å¤çä¸éè¦è¿è¡ç»å¶ã
ä¾å¦ä¸ä¾ä¸ï¼å°±å¯ä»¥ç¨CGRectIntersectsRectãCGRectIntersectionæCGRectContainsRectå¤ææ¯å¦éè¦ç»å¶imageåtextï¼ç¶ååè°ç¨ç»å¶æ¹æ³ã
é¢æ¸²æå¾åã
ä½ ä¼åç°å³ä½¿åå°äºä¸è¿°å ç¹ï¼å½æ°çå¾ååºç°æ¶ï¼ä»ç¶ä¼æçæçåé¡¿ç°è±¡ã解å³çåæ³å°±æ¯å¨bitmap contextéå
å°å
¶ç»ä¸éï¼å¯¼åºæUIImage对象ï¼ç¶ååç»å¶å°å±å¹ï¼è¯¦ç»åæ³å¯è§ãå©ç¨é¢æ¸²æå éiOS设å¤çå¾åæ¾ç¤ºãã
ä¸è¦é»å¡ä¸»çº¿ç¨ã
åå°åå ç¹åï¼ä½ çtable viewæ»å¨æ¶åºè¯¥è¶³å¤æµç
äºï¼ä¸è¿ä½ ä»å¯è½è®©ç¨æ·æå°ä¸ç½ã常è§çç°è±¡å°±æ¯å¨æ´æ°æ°æ®æ¶ï¼æ´ä¸ªçé¢å¡ä½ä¸å¨ï¼å®å
¨ä¸ååºç¨æ·è¯·æ±ã
åºç°è¿ç§ç°è±¡çåå å°±æ¯ä¸»çº¿ç¨æ§è¡äºèæ¶å¾é¿çå½æ°ææ¹æ³ï¼å¨å
¶æ§è¡å®æ¯åï¼æ æ³ç»å¶å±å¹åååºç¨æ·è¯·æ±ãå
¶ä¸æ常è§çå°±æ¯ç½ç»è¯·æ±äºï¼å®é常é½éè¦è±è´¹æ°ç§çæ¶é´ï¼èä½ ä¸åºè¯¥è®©ç¨æ·çå¾
é£ä¹ä¹
ã
解 å³åæ³å°±æ¯ä½¿ç¨å¤çº¿ç¨ï¼è®©å线ç¨å»æ§è¡è¿äºå½æ°ææ¹æ³ãè¿éé¢è¿æä¸ä¸ªå¦é®ï¼å½ä¸è½½çº¿ç¨æ°è¶
è¿2æ¶ï¼ä¼æ¾èå½±å主线ç¨çæ§è½ãå æ¤å¨ä½¿ç¨ ASIHTTPRequestæ¶ï¼å¯ä»¥ç¨ä¸ä¸ªNSOperationQueueæ¥ç»´æ¤ä¸è½½è¯·æ±ï¼å¹¶å°å
¶ maxConcurrentOperationCount设为2ãèNSURLRequeståå¯ä»¥é
åG C Dæ¥å®ç°ï¼æè
使ç¨NSURLConnectionçsetDelegateQueue:æ¹æ³ã
å½ç¶ï¼å¨ä¸éè¦ååºç¨æ·è¯·æ±æ¶ï¼ä¹å¯ä»¥å¢å ä¸è½½çº¿ç¨æ°ï¼ä»¥å å¿«ä¸è½½é度ï¼
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
if (!decelerate) {
queue.maxConcurrentOperationCount = 5;
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
queue.maxConcurrentOperationCount = 5;
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
queue.maxConcurrentOperationCount = 2;
}
æ¤å¤ï¼èªå¨è½½å
¥æ´æ°æ°æ®å¯¹ç¨æ·æ¥è¯´ä¹å¾å好ï¼è¿åå°äºç¨æ·çå¾
ä¸è½½çæ¶é´ãä¾å¦æ¯æ¬¡è½½å
¥50æ¡ä¿¡æ¯ï¼é£å°±å¯ä»¥å¨æ»å¨å°åæ°ç¬¬10æ¡ä»¥å
æ¶ï¼å è½½æ´å¤ä¿¡æ¯ï¼
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if (count - indexPath.row < 10 && !updating) {
updating = YES;
[self update];
}
}// updateæ¹æ³è·åå°ç»æåï¼è®¾ç½®updating为NO
è¿æä¸ç¹è¦æ³¨æçå°±æ¯å½å¾çä¸è½½å®æåï¼å¦æcellæ¯å¯è§çï¼è¿éè¦æ´æ°å¾åï¼
NSArray *indexPaths = [self.tableView indexPathsForVisibleRows];for (NSIndexPath *visibleIndexPath in indexPaths) {
if (indexPath == visibleIndexPath) {
MyTableViewCell *cell = (MyTableViewCell *)[self.tableView cellForRowAtIndexPath:indexPath];
cell.image = image;
[cell setNeedsDisplayInRect:imageRect];
break;
}
}// ä¹å¯ä¸éåï¼ç´æ¥ä¸å¤´å°¾ç¸æ¯è¾ï¼çæ¯å¦å¨ä¸é´å³å¯ã
æåè¿æ¯åé¢æ说è¿çinsertRowsAtIndexPaths:withRowAnimation:æ¹æ³ï¼æå
¥æ°è¡éè¦å¨ä¸»çº¿ç¨æ§è¡ï¼èä¸æ¬¡æå
¥å¾å¤è¡çè¯ï¼ä¾å¦50è¡ï¼ï¼ä¼é¿æ¶é´é»å¡ä¸»çº¿ç¨ãèæ¢æreloadDataæ¹æ³çè¯ï¼ç¬é´å°±å¤çå®äºã
就说é£ä¹å¤å§ï¼ææ³åå°è¿äºä¹å°±å·®ä¸å¤äºï¼å
¶ä»å°±éè¦èªè¡profileï¼æ¾åºç¶é¢æ¥ä¼åäºã
温馨提示:答案为网友推荐,仅供参考