リッチ テキスト (NSAttributedString) を表示するために使用している変更された UIView があります。UIView を UITableViewCell に追加していて、drawRect が実行されています。テキストを表示するために、そのメソッドをオーバーライドしました。
問題は、行 #3 に必要なテキストが書かれているが、その下に古いテキストがまだ残っていることです。
他のすべてのセルでも同じことが起こります。
各セルの UIView をクリアするにはどうすればよいですか?
これは私のドローレクトです
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, self.bounds);
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
CGContextTranslateCTM(context, 0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGMutablePathRef path = CGPathCreateMutable(); //1
CGPathAddRect(path, NULL, self.bounds );
CTFramesetterRef framesetter =
CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)self.attString);
CTFrameRef frame =
CTFramesetterCreateFrame(framesetter,
CFRangeMake(0, [self.attString length]), path, NULL);
CTFrameDraw(frame, context); //4
CFRelease(frame); //5
CFRelease(path);
CFRelease(framesetter);
}
そして、これを cellforrowatindexpath に追加する方法を次に示します。
NSAttributedString* attrString = [p attrStringFromMarkup:[NSString stringWithFormat:@"%@%@ %@%@ %@%@", @"<font color=\"black\">", userName, @"<font color=\"gray\">",actionType, @"<font color=\"black\">", object]];
CGRect rect = CGRectMake(0, 0, 249, 50);
CTView *aView = [[CTView alloc]initWithFrame:rect];
[aView setBackgroundColor:[UIColor clearColor]];
[(CTView*)aView setAttString: attrString];
[cell.feedView addSubview:aView];