[ios]需要我绘图视图是在 UIscrollView 上无限放大

发布时间: 2017/3/21 23:34:59
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

是否可能无限放大?我有一个地板的绘图功能,需要放大甚至为一个小的房间,要显示为较大,通过实施无限放大。如果我放大 15 倍以上的原始绘图视图,绘图消失和显示任何内容。

任何建议,将不胜感激!!

这里是我示例代码块︰

self.scrView.maximumZoomScale=200;
self.scrView.minimumZoomScale=0.5;

#pragma mark ScrollView Deleagte

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return self.objDrawingView;
}
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
{
[self.objDrawingView.layer setContentsScale:self.objDrawingView.transform.a*[[UIScreen mainScreen] scale]];
    [self.objDrawingView setNeedsDisplay];
}

解决方法 1:

如果你正在做绘图自己在 drawRect ,它听起来更好的性能,明智 (和当然因为你"无视假层"的消息),有一些自己的值包含的规模和偏移量,和尊重这在您的绘图代码。这种方式层的大小将始终保持不变,并没有必要动用那巨大的一层,如果最重要的是显示边界外。

当然它不应该用的滚动视图子然后,所以你需要获取的值从 scrollViewDidScroll 以及来计算您当前可见的矩形

这个想法的示例︰
如果当前代码在 drawRect 看起来就像

CGContextFillRect( CGRectMake(x,y,width,height) );

你缩放这通过缩放整个图层,我的建议有一个包含当前规模变量和不全层,鳞片状︰

CGContextFillRect( CGRectMake(x* _zoomScale,y* _zoomScale,width* _zoomScale,height* _zoomScale) );

或甚至更好地使用规模和转换方法上 CGContext 然后绘制代码将从这些独立。前三行 drawRect 然后应︰

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, -_contentOffset.x, -_contentOffset.y);
CGContextScaleCTM(context, _zoomScale, _zoomScale);

使 zoomScale 和 contentOffset 的属性并将其设置 UIScrollViewDelegate 方法。

官方微信
官方QQ群
31647020