gpt4 book ai didi

iphone - CAScrollLayer 不滚动!

转载 作者:搜寻专家 更新时间:2023-10-30 20:08:01 24 4
gpt4 key购买 nike

也许是因为来晚了。不管是什么原因,我无法弄清楚为什么我在尝试一个简单的 CSScrollLayer 示例时遇到问题。我向基于 View 的项目添加了一个 50 像素的 Eclipse 图标,并在我的初始化方法中(从 initWithNibName:bundle: 调用)我有这个:

-(void) initialize
{
CAScrollLayer *scrollLayer = [CAScrollLayer layer];
scrollLayer.backgroundColor = [[UIColor blackColor] CGColor];
CGRect bounds = self.view.bounds;
scrollLayer.bounds = CGRectMake(0, 0, bounds.size.width, bounds.size.height);
scrollLayer.contentsRect = CGRectMake(0, 0, bounds.size.width + 800, bounds.size.height + 800);
scrollLayer.borderWidth = 2.5;
scrollLayer.borderColor = [[UIColor redColor] CGColor];

scrollLayer.position = CGPointMake(self.view.center.x, self.view.center.y - 20);
scrollLayer.scrollMode = kCAScrollBoth;
[self.view.layer addSublayer:scrollLayer];
UIImage *image = [UIImage imageNamed:@"eclipse32.gif"];
for(int i=0; i<6; i++) {
layer = [CALayer layer];
layer.backgroundColor = [[UIColor blackColor] CGColor];
layer.bounds = CGRectMake(0, 0, 100, 100);
layer.contents = (id)[image CGImage];
layer.position = CGPointMake(layer.bounds.size.width * i, self.view.center.y);
[scrollLayer addSublayer:layer];
}
// [button removeFromSuperview];
// [self.view addSubview:button];
// self.view.userInteractionEnabled = YES;
[image release];
}

滚动层显示,图标在层上重复我在屏幕边缘周围有一个边框。一切都很可爱,除了我无法滚动图标。我试过/不设置滚动模式。我试过使用一个从屏幕上掉下来的拉伸(stretch)图标。我已经尝试了一切。我做错了什么?

最佳答案

CAScrollLayer 不插入 UIEvent 链,因此您需要手动添加代码来修改触摸事件的滚动偏移。像 UIScrollView 那样获得滚动动量也非常棘手。我强烈建议使用 UIScrollView 重新实现——它会非常简单。唯一的选择是手动处理触摸事件,这很痛苦!我尝试使用 CAScrollLayer 获得一个不错的滚动条,但在手动实现了一些笨拙的滚动行为后放弃了。

我在使用 CALayer 或 UIView 时遵循的一般规则是在不需要任何用户交互时使用 CALayer 对象。如果用户要触摸它,请使用 UIView,它是一个非常轻量级的对象,因此开销可以忽略不计。

也就是说,我发现 CAScrollLayer 非常无用!为什么不直接使用 CALayer 并修改边界呢?它可能有一些用处,但它不能替代 UIScrollView。

关于iphone - CAScrollLayer 不滚动!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2331440/

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