CAScrollLayer does not scroll!

Maybe because it's late. Be that as it may, I cannot understand why I am having problems with the simple CSScrollLayer example that I am trying. I add an Eclipse icon of 50 pixels to the project based on the view and to my initialization method (called from initWithNibName: bundle :) I have this:

-(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];
}

The scroll level indicates that the icon repeats on the layer. I have a border around the edge of the screen. Everything is fine, except that I cannot scroll through the icons. I tried with / without setting the scroll mode. I tried with one stretched icon that falls off the screen. I tried everything. What am I doing wrong?

+3
2

CAScrollLayer UIEvent, . , UIScrollView. UIScrollView - . , ! CAScrollLayer .

, CALayer UIView, - CALayer, - . , UIView, , .

, CAScrollLayer ! CALayer ? , , UIScrollView.

+3

:

- (void)scroll {
[scrollLayer scrollToPoint:scrollPoint];
scrollPoint.x += 10;
[self performSelector:_cmd withObject:nil afterDelay:0.1];
}

:

scrollPoint = CGPointMake(0, 0);
[self scroll];
0

Source: https://habr.com/ru/post/1734356/


All Articles