У меня есть класс под названием TiledScrollViewController
, который совсем не связан с UIScrollView
. В этом представлении контроллер, я пытаюсь добавить CALayer в свойство bgImageView
на моем контроллере просмотра из обратного вызова в другом месте приложения, вызвав newCylon
. Да. Cylon. Это глупое приложение, но это важный вопрос.CALayer не отображается, если добавлен после просмотраDidLoad
Вот как я создаю свои новые слои цилиндра.
-(CALayer *)newCALayerWithNSString:(NSString *)imageName
andCATransform3D:(CATransform3D)transform
andCGPoint:(CGPoint)point {
CALayer *outputLayer = [CALayer layer];
UIImage *img = [UIImage imageNamed:imageName];
outputLayer.backgroundColor = [UIColor colorWithPatternImage:img].CGColor;
[outputLayer setBounds:CGRectMake(0.0, 0.0, img.size.width, img.size.height)];
outputLayer.transform = transform;
[outputLayer setPosition:point];
[outputLayer setZPosition:5.0];
return outputLayer;
}
А вот как я называю, что в newCylon
.
-(CALayer *)newCylon{
NSLog(@"NEW CYLON");
CALayer *cylon = [self newCALayerWithNSString:@"Cylon"
andCATransform3D:CATransform3DMakeScale(.3, -.3, .3)
andCGPoint:CGPointMake(.5*screenWidth,0)];
[self.bgImageView.layer addSublayer:cylon]; // this works, but I don't see anything
[self moveCylon:cylon];
return cylon;
}
Теперь. У меня есть один цилиндр CALayer
, который отображает и оживляет, потому что я звоню [self newCylon]
внутри viewDidLoad
. Но если я назову newCylon
нигде, ничего не появится. Я могу проверить через [self.bgImageView.layer sublayers]
, что размер массива sublayers
меняется. Но на экране ничего не появляется, кроме первого цилиндра.
Что я делаю неправильно?
Вы должны назвать свои аргументы за то, для чего они используются, а не то, что они есть. –