交叉溶解转换会干扰UIPageController页面上的页面卷曲



我正在UIPageController子类页面上的图像之间进行交叉溶解。在应用转换时,可以翻页。有时,在转换完成之前,正在翻转的页面会在中间翻转时变为透明。

在下面的代码中,Page类是UIViewController的子类,其视图具有UIImageView子视图。PageController是我的UIPageViewController子类。

@implementation PageController : UIPageViewController 
- (void)crossfadeToImage:(UIImage *)image
{   
    for (int i = 0; i < self.pages.count; i++) {
        Page *page = self.pages[i];  // Pages fed to page controller in delegate
        [UIView transitionWithView:page.view duration:duration options:UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionCurveEaseInOut animations:^{
            page.image = image;
        } completion:nil];
    }
}

页面代码如下:

// HEADER
@interface Page : UIViewController
@property (strong, nonatomic) UIImage *image;
- (instancetype)initWithPageFrameSize:(CGSize)size image:(UIImage *)image;
@end
// IMPLEMENTATION
@implementation Page
- (void)loadView
{
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, _pageFrameSize.width, _pageFrameSize.height)];
    self.view = view;
}
- (UIImage *)image
{
    return _imageView.image;
}
- (void)setImage:(UIImage *)image
{
    if (!_imageView) {
        _imageView = [[UIImageView alloc] initWithImage:image];
        _imageView.frame = self.view.bounds;
        [self.view addSubview:_imageView];
    } else {
        _imageView.image = image;
    }
}
@end

我猜交叉渐变和页面卷曲动画是以一种奇怪的方式堆叠的。关于如何防止这种"消失页面"的副作用,有什么想法吗?

将动画应用于imageView可以直接修复此问题。类似于:

- (void)crossfadeToImage:(UIImage *)image
{
    for (int i = 0; i < self.pages.count; i++) {
        Page *page = self.pages[i];  // Pages fed to page controller in delegate
        [UIView transitionWithView:page.**imageView** duration:duration options:UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionCurveEaseInOut animations:^{
            page.**imageView**.image = image;
        } completion:nil];
    }
}

尽管如此,任何关于为什么它不能以另一种方式工作的见解都是受欢迎的。

相关内容

  • 没有找到相关文章

最新更新