删除文本时绘制的线条会消失

时间:2013-10-21 05:16:38

标签: objective-c uitextview drawrect

要以编程方式在textview中创建行,我已实现以下代码:

- (void)drawRect:(CGRect)rect{
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    [super drawRect:rect];
    CGSize textSize = [alpha sizeWithFont:[UIFont fontWithName:@"FreeHand575" size:28.0]
    constrainedToSize:self.contentSize lineBreakMode:NSLineBreakByCharWrapping];
    NSUInteger height = textSize.height;
    textSize = [self.text sizeWithFont:self.font constrainedToSize:self.contentSize       
    lineBreakMode:NSLineBreakByCharWrapping];
    NSUInteger contentHeight = (rect.size.height > textSize.height) ?  
   (NSUInteger)rect.size.height : textSize.height;
    NSUInteger offset = height; 
   CGContextSetRGBStrokeColor(ctx, .8, .8, .8, 1);
   for(int i=offset;i < contentHeight;i+=height) {
      CGPoint lpoints[2] = { CGPointMake(0, i), CGPointMake(rect.size.width, i) };
      CGContextStrokeLineSegments(ctx, lpoints, 2);
   }}

它工作得很好。但问题是当用户从textview中删除文本时,某些地方绘制的行也会被删除或淡出。

textview with fade lines

我无法找到问题。如果有人有想法请帮助我。

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以在主图层下方为textview添加一个图层,并在其上绘制线条。这样绘图文本(或删除)不会影响线条。 阅读here以了解如何在图层上绘图,请参阅“CALayer和自定义绘制内容”。