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);
}
}