Z pewnych powodów staram się unikać używania opcji CAScrollLayer, aby to zrobić. Efektem, który zamierzam osiągnąć, jest stopniowe ujawnianie (od dołu do góry) treści CALayera (wcześniej załadowanego png). Więc pomyślałem o zrobieniu tego:jak mogę animować granice CAlayer'a, aby stopniowo ujawniać obraz?
layer.anchorPoint = CGPointMake(.5, 1);
CABasicAnimation* a = [CABasicAnimation animationWithKeyPath:@"bounds.size.height"];
a.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
a.fillMode = kCAFillModeBoth;
a.removedOnCompletion = NO;
a.duration = 1;
a.fromValue = [NSNumber numberWithFloat:0.];
a.toValue = [NSNumber numberWithFloat:layer.bounds.size.height];
[layer addAnimation:a forKey:nil];
Problem z tym jest, można powiedzieć, zawartość warstwy jest skalowana z granicami. Próbowałem zmienić granice, ale zawartość pozostała zawsze oryginalną wielkością, tak aby skutecznie obcinały obraz, a gdy zwiększam granice.wzrost, obraz "Ujawnia się" sam.
Jakieś pomysły, jak je usunąć lub co może mi zabraknąć?
wiem, ale ze względu na skuteczność w więcej niż jednym poziomie (nie może sprowadzić kilka z tych efektów naraz i muszę sam sobie poradzić z CALayers) Postanowiłem nie iść tą drogą. Teraz eksperymentuję z contentRect i udało mi się zrobić to prawie dobrze. Jedynym problemem jest to, że gdy treść jest animowana, dostaję coś w stylu ścieżki rysowanej wewnątrz warstwy. – SaldaVonSchwartz
Dokumentacja dla contentRect mówi, że "jeśli piksele znajdujące się poza prostokąciami jednostki są wymagane, piksele krawędzi obrazu zawartości zostaną rozciągnięte na zewnątrz" Tak więc sądzę, że właśnie dlatego uzyskuję efekt obrysu – SaldaVonSchwartz