【发布时间】:2010-04-29 15:03:54
【问题描述】:
我目前在使用 CATiledLayer 时遇到以下问题:当视图首次加载时,滚动效果很好,但是当您缩放一次时,视图会捕捉到锚点(左上角)并且无法再滚动一点也不。缩放的工作原理是它会放大和缩小,但它只会放大到左上角。
我的代码如下:
#import <QuartzCore/QuartzCore.h>
#import "PracticeViewController.h"
@implementation practiceViewController
//@synthesize image;
- (void)viewDidLoad
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"H-5" ofType:@"jpg"];
NSData *data = [NSData dataWithContentsOfFile:path];
image = [UIImage imageWithData:data];
CGRect pageRect = CGRectMake(0, 0, image.size.width, image.size.height);
CATiledLayer *tiledLayer = [CATiledLayer layer];
tiledLayer.anchorPoint = CGPointMake(0.0f, 1.0f);
tiledLayer.delegate = self;
tiledLayer.tileSize = CGSizeMake(1000, 1000);
tiledLayer.levelsOfDetail = 6;
tiledLayer.levelsOfDetailBias = 0;
tiledLayer.bounds = pageRect;
tiledLayer.transform = CATransform3DMakeScale(1.0f, -1.0f, 0.3f);
myContentView = [[UIView alloc] initWithFrame:self.view.bounds];
[myContentView.layer addSublayer:tiledLayer];
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
scrollView.delegate = self;
scrollView.contentSize = pageRect.size;
scrollView.minimumZoomScale = .2;
scrollView.maximumZoomScale = 1;
[scrollView addSubview:myContentView];
[self.view addSubview:scrollView];
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return myContentView;
}
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"H-5" ofType:@"jpg"];
NSData *data = [NSData dataWithContentsOfFile:path];
image = [UIImage imageWithData:data];
CGRect imageRect = CGRectMake (0.0, 0.0, image.size.width, image.size.height);
CGContextDrawImage (ctx, imageRect, [image CGImage]);
}
@end
【问题讨论】:
-
Stack Overflow 不适用于执行代码审查。如果您有具体问题,请提出与这些问题相关的问题。
-
我确实有一个特定的问题,我在下面的 lucius 的回答中记录了该问题。 “好的,我已经更新了我的代码以反映我现在所拥有的,现在真的只有一个问题。当视图第一次加载时,滚动效果很好。但是当你缩放一次时,视图会捕捉到锚点(顶部左角)并且它根本无法滚动。缩放的工作原理是它会放大和缩小,但它只会放大到左上角。“不知道你在抱怨什么
-
4598 - 您的问题中没有实际问题,解析 cmets 以找出所问的内容并不是很简单。我已经编辑了您的问题以反映您现在的问题。
-
4598 - 在当前的编辑中,我还标记了您的新问题:stackoverflow.com/questions/2750320/… 与此问题重复,因为它在问同样的问题。无意冒犯,我只是想让事情井井有条。
-
好的,谢谢。只是想解决最后一个问题。
标签: iphone ipad catiledlayer