gpt4 book ai didi

ios - UIscrollView 上的绘图 View 需要无限缩放

转载 作者:行者123 更新时间:2023-11-28 22:02:51 24 4
gpt4 key购买 nike

是否可以无限放大?因为我有地板绘图功能,我需要通过实现无限缩放来缩放即使是小房间也要显示得更大。如果我将原始绘图 View 缩放超过 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];
}

最佳答案

如果您在 drawRect 中自己绘制,听起来性能更好(当然是因为您的“忽略伪图层”消息),拥有一些包含比例和抵消,并在您的绘图代码中遵守这一点。这样图层的大小将始终保持不变,如果大部分图层都在显示范围之外,则无需绘制那个巨大的图层。

当然它不应该是 scrollView 的子级,因此您还需要从 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 方法中设置。

关于ios - UIscrollView 上的绘图 View 需要无限缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24693759/

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