带有渐变叠加的 UIPageViewController?

Posted

技术标签:

【中文标题】带有渐变叠加的 UIPageViewController?【英文标题】:UIPageViewController with gradient overlay? 【发布时间】:2012-09-23 22:42:19 【问题描述】:

我需要创建一个类似书本的应用程序并想使用 UIPageViewController。 (iPad,具有两页的水平布局 (UIPageViewControllerSpineLocationMid)。

为了使屏幕更吸引人,我希望控制器的视图与图像或 CAGradientLayer 叠加,使脊椎可见。

我尝试向 pageViewController 添加一个子视图,但它似乎在动画过渡开始时被删除。

有人有想法吗?

【问题讨论】:

检查您的视图层次结构,您可能在这里做错了 我通过将 CAGradientLayer 添加到 UIPageViewController 的子控制器的视图中使其工作。 好的,你可以在这里发布你自己的答案并验证它,这样你就知道了 【参考方案1】:

我通过将 CAGradientLayer 添加到 UIPageViewController 当前显示的子控制器的视图中解决了这个问题。 我必须区分左右页面(对于双面横向模式)。 为此,我创建了一个名为“rightPage”的 bool 属性并重载了 setter:

- (void) setRightPage:(BOOL)rightPage

    _rightPage = rightPage;
    if (!self.spineShadow) 
        self.spineShadow = [CAGradientLayer layer];
    
    self.spineShadow.zPosition = 5000;
    self.spineShadow.colors = [NSArray arrayWithObjects:
                               (id)[UIColor clearColor].CGColor,
                               (id)[[[UIColor blackColor] colorWithAlphaComponent:0.3] CGColor],
                               nil];

    if (rightPage) 
        self.spineShadow.startPoint = CGPointMake(1.00f,0.5f);
        self.spineShadow.endPoint   = CGPointMake(0.00f,0.5f);
     else 
        self.spineShadow.startPoint = CGPointMake(0.00f,0.5f);
        self.spineShadow.endPoint   = CGPointMake(1.00f,0.5f);
    

【讨论】:

以上是关于带有渐变叠加的 UIPageViewController?的主要内容,如果未能解决你的问题,请参考以下文章

带有图像的透明径向渐变? [复制]

带有 MapKit ios 的渐变折线

带有背景渐变的CSS子菜单覆盖内容

防止渐变叠加滚动

在图像上创建渐变叠加

使用单行 CSS 对图像进行渐变叠加