我在uiscrollview中有一个子类UIView对象,它显示了一个pdf页面。我可以缩放那个页面。但是当我这样做时,内部视图会变焦并变得模糊。我明白内部视图会被刷新,我称之为setNeedsDisplay。但是没有发生任何变化,即使是现在也是如此。下面是子类uiview的drawRect代码。
- (void)drawRect:(CGRect)rect
{
if(document)//the pdf document object
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSaveGState(ctx);
CGContextTranslateCTM(ctx, 0.00, [self bounds].size.height);
NSLog(@"%f",[self bounds].size.height);
CGContextScaleCTM(ctx, 1.0, -1.0);
CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform(page, kCGPDFCropBox,
[self bounds], 0, true));
CGContextDrawPDFPage(ctx, page);
CGContextRestoreGState(ctx);
}
}
答案 0 :(得分:1)
查看ScrollViewSuite示例代码提供的CATiledLayer示例:
http://developer.apple.com/iphone/library/samplecode/ScrollViewSuite/Introduction/Intro.html
TapToZoom示例说明了一种在放大视图时让视图重绘其内容的方法。你需要以某种方式将视图的框架设置为大于屏幕,或者也可以使用变换 - 但是,我以前从未使用过变换。
答案 1 :(得分:1)
回答有点迟,正如所指出的那样,每次应用缩放时都必须设置子视图的帧。确保备份原始帧尺寸,以便在其上应用缩放系数。
滚动视图在缩放子视图时不会更改其子视图的框架,这就是子视图内容未刷新的原因。我发现使用变换和其他复杂的,所以我只是尝试了所提到的方法,它对我有用。