0

为了以编程方式在 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 中删除文本并且有时某些地方绘制的线也会被删除或淡出时,问题就来了。

带有淡入淡出线的文本视图

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

提前致谢

4

1 回答 1

0

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

于 2013-10-21T11:50:55.963 回答