gpt4 book ai didi

iphone - UIScrollView contentSize 是否有最大值?

转载 作者:行者123 更新时间:2023-12-03 18:45:07 40 4
gpt4 key购买 nike

我正在开发一个带有甘特图的小型 iPad 应用程序,它将显示过去 25 小时内的事件。我有 5 个缩放级别,每个级别分别为 1 小时、30 分钟、15 分钟、5 分钟和 1 分钟。我的单元格宽度为 30 像素。从每小时的 Zoomlevel 开始,我的内容宽度为 25 * 30 像素 = 750(还不需要滚动)。当缩放单元格宽度保持不变时,只会有更多单元格,我可以水平滚动。它非常适合 30 分钟、15 分钟和 5 分钟。当达到 1 分钟级别(宽度为 45000 像素 (30 * 1500) 时,事情开始出错。 ScrollView 卡住(我仍然可以滚动,但显示未更新)。

drawRect:已经运行完毕(所以它应该被正确绘制)。我可以在按钮处看到一个小滚动条(它甚至到达末尾)。所以我试着警惕宽度,似乎问题是从大约 16300 像素宽度开始的。有解决办法吗?或者有什么解决办法吗?

我使用带有包含的 uiview (Ganttchartview) 的 ScrollView,其中drawRect:我已经重载了。

放大,其中 CELL_WIDTH 为 30,缩放级别为 25、50、75、300、1500

 -(IBAction) zoomIn:(id)sender {
self.zoomIndex++;
int width = CELL_WIDTH * [[self.zoomLevels objectAtIndex: self.zoomIndex] intValue];
self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, width, self.frame.size.height);
[self.parentView setContentSize: CGSizeMake(self.frame.size.width, self.frame.size.height)];
[self setNeedsDisplay];
}

绘制线条的drawRect

- (void)drawRect:(CGRect)rect {
    CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
CGContextSetLineWidth(context, 2.0);
int interval = [[self.zoomLevels objectAtIndex: self.zoomIndex] intValue];
int width = CELL_WIDTH;
for (int i = 0; i < interval; i++) {
CGContextMoveToPoint(context, width * (i +1), START_AT);
CGContextAddLineToPoint(context, width * (i +1), rect.size.height);
CGContextStrokePath(context);
}
for (int i = 0; i < NUMBER_OF_ROWS; i++) {
CGContextMoveToPoint(context, 0, START_AT + i * CELL_WIDTH);
CGContextAddLineToPoint(context, rect.size.width, START_AT + i * CELL_WIDTH);
CGContextStrokePath(context);
}
}

最佳答案

我建议此类应用程序使用无限 ScrollView 。这包括基于固定(且有限)的 contentSize 的编码技巧,为用户提供无限滚动的体验。WWDC 2011 上已经展示了一个很好的例子,因此如果您有开发者帐户,则可以下载视频(有一个专门用于 ScrollView 的部分)。或者你可以引用网上的一些例子。当然,您需要重构代码,以便仅加载所需的内容,而不加载可能填充可用内存的全部内容。

关于iphone - UIScrollView contentSize 是否有最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7514251/

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