Tôi có một scrollView với phân trang được kích hoạt và một số N của các trang, được UIViews như subviews của scrollView.Làm cách nào để tôi có thể lồng ghép Hoạt ảnh lõi cho các Lớp khác nhau?
Tôi đang cố gắng để làm như sau:
cuộn tài khoản để số trang n. Tại thời điểm đó, 7 CALayers trước đó đã được thêm vào số trang (nghĩa là, để trang [[scrollView subviews] objectAtIndex: n-1] .layer subLayers]) phai dần, cái khác.
Nhưng tôi không thể tìm ra cách làm cho các CALayers mờ dần.Trong thời gian này, tôi đã thử 3 phương pháp sau đây từ phương thức ủy nhiệm của bộ điều khiển của tôi: (giả sử tôi có một mảng cho các lớp và độ mờ của chúng) được đặt thành 0 khi tạo)
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
int pageNumber = floor(self.scrollView.contentOffset.x/self.scrollView.frame.size.width);
if(pageNumber == (n-1))
{
int timeOffset = 0;
[CATransaction begin];
for(CALayer *layer in layerArray)
{
CABasicAnimation *a = [CABasicAnimation animationWithKeyPath:@"opacity"];
a.duration = 6;
a.beginTime = timeOffset++;
a.fromValue = [NSNumber numberWithFloat:0.];
a.toValue = [NSNumber numberWithFloat:1.];
[layer addAnimation:a forKey:nil];
}
[CATransaction commit];
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
int pageNumber = floor(self.scrollView.contentOffset.x/self.scrollView.frame.size.width);
if(pageNumber == (n-1))
{
int timeOffset = 0;
[CATransaction begin];
for(CALayer *layer in layerArray)
{
CABasicAnimation *a = [CABasicAnimation animation];
a.duration = 6;
a.beginTime = timeOffset++;
[layer addAnimation:a forKey:@"opacity"];
[layer setOpacity:1];
}
[CATransaction commit];
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
int pageNumber = floor(self.scrollView.contentOffset.x/self.scrollView.frame.size.width);
if(pageNumber == (n-1))
{
int timeOffset = 0;
for(CALayer *layer in layerArray)
{
[CATransaction begin];
CABasicAnimation *a = [CABasicAnimation animation];
a.duration = 6;
a.beginTime = timeOffset++;
[layer addAnimation:a forKey:@"opacity"];
[layer setOpacity:1];
}
for(CALayer *layer in layerArray)
[CATransaction commit];
}
}
Nhưng dường như không hoạt động. Khi người dùng cuộn đến đúng trang, tất cả các lớp sẽ hiển thị cùng một lúc, mà không bị mờ dần và chắc chắn không theo thứ tự tuần tự.
Bất kỳ ý tưởng nào?