在一个类似的帖子,我发现了一个解决方案,无限动画滚动图像:CABasicAnimation - 视网膜设备上的图像的无限滚动是乱码
Animate infinite scrolling of an image in a seamless loop
虽然这种解决方案精美的作品,似乎有在视网膜装置上运行时的问题。特别是,我只在iPad上运行此项目。非视网膜iPad 2滚动图像没有任何问题。但运行在视网膜iPad 3或4的图像是一团糟!这很难描述,但我能说的最好的是它是乱码。像素被延伸到每一个方向。它类似于杰克逊波拉克的绘画。
屏幕截图:
我测试此使用非视网膜图像(非2x)和视网膜的版本(@ 2×)。图像很大 - 全屏(横向),宽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
也许你可以上传一个截图到imgur.com并发布一个链接。 – 2013-03-01 05:36:22
我编辑了这个问题,并添加了一个链接到问题看起来像的屏幕截图。 – 2013-03-02 01:07:01