在类似的帖子中,我找到了一个无限动画滚动图像的解决方案:
尽管此解决方案运行良好,但在视网膜设备上运行时似乎存在问题。特别是,我只在 iPad 上运行这个项目。非视网膜 iPad 2 滚动图像没有任何问题。但是在视网膜 iPad 3 或 4 上运行图像是一团糟!这很难描述,但我能说的最好的就是它是乱码。像素被拉伸到各个方向。它类似于杰克逊·波拉克的画作。
截屏:
我使用非视网膜图像(非 2x)和视网膜版本(@2x)对此进行了测试。图像很大 - 全屏(横向),宽 4 个面板 (4096 x 768)。我玩过较小的图像,但结果相同。
CABasicAnimation 的滚动功能是否存在会影响视网膜设备的限制? 这是我正在使用的代码(由 rob mayoff 提供):
UIImage *crawlImage = [UIImage imageNamed:@"CrawlBackground.png"];
UIColor *crawlPattern = [UIColor colorWithPatternImage:crawlImage];
self.crawlLayer = [CALayer layer];
self.crawlLayer.backgroundColor = crawlPattern.CGColor;
self.crawlLayer.transform = CATransform3DMakeScale(1, -1, 1);
self.crawlLayer.anchorPoint = CGPointMake(0, 1);
self.crawlLayer.frame = CGRectMake(0, 0, crawlImage.size.width + 1024, crawlImage.size.height);
[self.backgroundCrawl.layer addSublayer:self.crawlLayer];
self.backgroundCrawl.layer.zPosition = 0;
CGPoint startPoint = CGPointZero;
CGPoint endPoint = CGPointMake(-crawlImage.size.width, 0);
self.crawlLayerAnimation = [CABasicAnimation animationWithKeyPath:@"position"];
self.crawlLayerAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
self.crawlLayerAnimation.fromValue = [NSValue valueWithCGPoint:startPoint];
self.crawlLayerAnimation.toValue = [NSValue valueWithCGPoint:endPoint];
self.crawlLayerAnimation.repeatCount = HUGE_VALF;
self.crawlLayerAnimation.duration = 30; // nn seconds to complete the cycle