Iphone 如果视图宽度大于16600左右,UIView中的图形将停止工作

Iphone 如果视图宽度大于16600左右,UIView中的图形将停止工作,iphone,uiview,drawing,Iphone,Uiview,Drawing,我使用以下代码在视图中绘制图形(在drawRect方法中): CGContextBeginPath(上下文); CGContextMoveToPoint(上下文,devicePoint.x,devicePoint.y); 对于(索引=1;索引

我使用以下代码在视图中绘制图形(在drawRect方法中):

CGContextBeginPath(上下文);
CGContextMoveToPoint(上下文,devicePoint.x,devicePoint.y);
对于(索引=1;索引<数据计数;索引++){
devicePoint=[[deviceDataArray objectAtIndex:index]CGPointValue];
CGContextAddLineToPoint(上下文,devicePoint.x,devicePoint.y);
}
CGContextSetLineJoin(上下文,kCGLineJoinRound);
CGContextStrokePath(上下文);
如果
view.bounds.size.width
小于约16600,则该方法有效。但超过这个尺寸,图就不再出现了


我根据要绘制的数据范围调整视图的大小。

这是一个非常糟糕的主意,为视图设置如此大的宽度,您必须只绘制用户在一次(或更多时间)内可以看到的内容,并使用正常(屏幕)大小的视图。要控制用户当前所在的位置,请使用UIScrollView。

您最好使用CAShapeLayers进行绘制,因为它们没有实际像素,只有硬件绘制的路径。然后你可以有一个UIScrollView,它只显示了用于绘图的CAShapeLayers的部分,否则,您将创建一个视图与当前视图一样大的巨大图像。

打印视图是一个子视图,其宽度大于16300时视图将停止显示,但如果大小小于此阈值,则视图将重新出现。谢谢。我同意视图大小不应该变得这么大。中的视图已在滚动视图中。谢谢。我需要调查一下。但我不明白为什么它在大小变化时表现不同,因为超过一定的大小,它可能会拒绝分配那么多内存。另外,请看一下CALayer的各种用途示例,包括CAShapeLayer
CGContextBeginPath(context);
CGContextMoveToPoint(context, devicePoint.x, devicePoint.y);

for (index = 1; index < dataCount; index++) {
    devicePoint = [[deviceDataArray objectAtIndex:index] CGPointValue];
    CGContextAddLineToPoint(context, devicePoint.x, devicePoint.y);
}

CGContextSetLineJoin(context, kCGLineJoinRound);
CGContextStrokePath(context);