UIPageViewController с градиентным наложением?

Мне нужно создать приложение, похожее на книгу, и я хочу использовать UIPageViewController. (iPad, горизонтальный макет с двумя страницами (UIPageViewControllerSpineLocationMid).

Чтобы сделать экран более привлекательным, я бы хотел, чтобы вид контроллера был наложен на изображение или на слой CAGradientLayer, делающий позвоночник видимым.

Я попытался добавить подпредставление к pageViewController, но, похоже, оно удаляется при запуске анимированного перехода.

У кого-нибудь есть идея?

1 ответ

Решение

Я решил проблему, добавив CAGradientLayer к представлениям отображаемых в данный момент подконтроллеров UIPageViewController. Мне пришлось различать левую и правую страницы (для двухстороннего ландшафтного режима). Чтобы достичь этого, я создал свойство bool под названием "rightPage" и перегрузил сеттер:

- (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);
    }
}
Другие вопросы по тегам