gpt4 book ai didi

iphone - 上下文绘图+分页

转载 作者:IT王子 更新时间:2023-10-29 07:35:48 26 4
gpt4 key购买 nike

我正在尝试将 scrollview 的内容绘制到 PDF 上下文中,但我遇到了 pagination 的问题。

我使用的代码如下:

- (void)renderTheView:(UIView *)view inPDFContext:(CGContextRef)pdfContext
{
// Creating frame.
CGFloat heightOfPdf = [[[self attributes] objectForKey:SRCPdfHeight] floatValue];
CGFloat widthOfPdf = [[[self attributes] objectForKey:SRCPdfWidth] floatValue];
CGRect pdfFrame = CGRectMake(0, 0, widthOfPdf, heightOfPdf);
CGRect viewFrame = [view frame];

if ([view isKindOfClass:[UIScrollView class]])
{
viewFrame.size.height = ((UIScrollView *)view).contentSize.height;
[view setFrame:viewFrame];
}
// Calculates number of pages.
NSUInteger totalNumberOfPages = ceil(viewFrame.size.height/heightOfPdf);

// Start rendering.
for (NSUInteger pageNumber = 0; pageNumber<totalNumberOfPages; pageNumber++)
{
// Starts our first page.
CGContextBeginPage (pdfContext, &pdfFrame);
// Turn PDF upsidedown
CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformMakeTranslation(0,view.bounds.size.height);
transform = CGAffineTransformScale(transform, 1.0, -1.0);
CGContextConcatCTM(pdfContext, transform);

// Calculate amount of y to be displace.
CGFloat ty = (heightOfPdf*(pageNumber));

CGContextTranslateCTM(pdfContext,0,-ty);
[view.layer renderInContext:pdfContext];

// We are done drawing to this page, let's end it.
CGContextEndPage (pdfContext);
}
}

它创建了所需数量的页面但错误地放置了内容。下图解释了它。 enter image description here

我的代码有什么问题吗?

最佳答案

我认为您不需要翻转 PDF 的代码。我以前做过这个(手动分页,但没有 ScrollView )并且从来没有垂直翻转上下文。我主要担心的是你在每次迭代中都这样做——如果你有充分的理由翻转它,你可能不需要在循环中使用它,但在循环开始之前只需要一次。此外,代码 CGContextTranslateCTM(pdfContext,0,-ty); 可能需要替换为 CGContextTranslateCTM(pdfContext,0,heightOfPdf);

如果这不起作用,请尝试 UIGraphicsBeginPDFPage(); 而不是 CGContextBeginPage(),这是你的代码和我的代码之间唯一的主要区别。

关于iphone - 上下文绘图+分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7607167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com