ios 画pdf时不会自动换行,自己写的一个自动换行的小方法

beginx,开始画pdf时的x坐标,text要画的内容, heigh目前pdf的高度,fontsize字体大小,context联系上下文的对象

-(int)plaintextatwith:(int)beginx width:(int)width text:(NSString *)text height:(int)height fontsize:(int)fontsize context:(CGContextRef)context{

    int linewidth=width;

    int i=0,j=0;

    const char *texts;

    NSString *thisline;

    for(;i<text.length;){

        thisline=@"";

        //剩余字符长度大于linewidth

        if([[text substringFromIndex:j] sizeWithFont:[UIFont fontWithName:@"Helvetica" size:fontsize]].width>linewidth){

        while ([thisline sizeWithFont:[UIFont fontWithName:@"Helvetica" size:fontsize]].width<linewidth) {

            i++;

            thisline=[text substringWithRange:NSMakeRange(j, i-j)];

        }

        j=i;

            if(j!=0){

            height=height-fontsize-1;

            }

           NSString *linetext=[NSString stringWithFormat:@"%@",thisline];

           NSRange range=[linetext rangeOfString:@"\n"];

           while (range.length>0) {

               NSString *linetext1=[NSString stringWithFormat:@"%@",[linetext substringToIndex:range.location]];

               texts=(char *)[linetext1 UTF8String];

               CGContextShowTextAtPoint(context, beginx, height, texts, strlen(texts));

               height=height-fontsize-1;

               linetext=[linetext substringFromIndex:range.location+range.length];

               range=[linetext rangeOfString:@"\n"];

           }

           texts=(char *)[linetext UTF8String];

           CGContextShowTextAtPoint(context,beginx,height, texts, strlen(texts));

            if(height<70){

                CGContextEndPage(context);

                CGRect pageRect=CGRectMake(0, 0, 612, 792);

                CGContextBeginPage(context,&pageRect );

                height=792-50;

                CGContextSelectFont(context, "Helvetica", fontsize, kCGEncodingMacRoman);

                CGContextSetTextDrawingMode(context, kCGTextFill);

                CGContextSetRGBFillColor(context, 0, 0, 0, 1);

            }

            //剩余字符小于linewidth

        }else{

            thisline=[text substringFromIndex:j];

            i=text.length;

            if(j!=0){

                height=height-fontsize-1;

            }

                 NSString *linetext=[NSString stringWithFormat:@"%@",thisline];

                 NSRange range=[linetext rangeOfString:@"\n"];

                 while (range.length>0) {

                     NSString *linetext1=[NSString stringWithFormat:@"%@",[linetext substringToIndex:range.location]];

                     texts=(char *)[linetext1 UTF8String];

                     CGContextShowTextAtPoint(context, beginx, height, texts, strlen(texts));

                     height=height-fontsize-1;

                     linetext=[linetext substringFromIndex:range.location+range.length];

                     range=[linetext rangeOfString:@"\n"];

                 }

                 texts=(char *)[linetext UTF8String];

                 CGContextShowTextAtPoint(context,beginx,height, texts, strlen(texts));

            if(height<70){

                CGContextEndPage(context);

                CGRect pageRect=CGRectMake(0, 0, 612, 792);

                CGContextBeginPage(context,&pageRect );

                height=792-50;

                CGContextSelectFont(context, "Helvetica", fontsize, kCGEncodingMacRoman);

                CGContextSetTextDrawingMode(context, kCGTextFill);

                CGContextSetRGBFillColor(context, 0, 0, 0, 1);

            }

        }

    }     


    return height;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值