Границы автоматически изменяются в UIScrollView со вставками содержимого
Я использую UIScrollView в качестве моего просмотра прокрутки страниц,pagesScrollView
, Внутри этого я поместил отдельные UIScrollViews, которые используются исключительно для масштабирования. Внутри каждого из них у меня есть один вид, который представляет собой элемент страницы, который должен быть масштабируемым. Все это находится внутри UINavigationController с полупрозрачной панелью навигации.
мойpagesScrollView
имеетcontentInset.top = 64
а такжеbounds.origin.y = -64
(это кажется мне странным, но это то, что система настраивает автоматически для меня), и это работает просто отлично. Мой экран выглядит великолепно!
Тем не менее, после того, как я прокручиваюpagesScrollView
даже чуть-чуть, как толькоscrollViewWillEndDragging
называется,pagesScrollView
начинается анимационное изменение отbounds.origin.y = -64
вbounds.origin.y = 0
что заставляет элементы моей страницы быть скрытыми навигационной панелью.
Слева это то, как оно выглядит при загрузке, справа это то, как оно выглядит после того, как я перетащил всего несколько пикселей и затем отпустил, он скользит вверх под панелью навигации (потому что bounds.origin.y переходит на 0) ,
Проблема в том, что у меня нет кода, который изменяет границы, и у меня нет кода в различных методах делегата прокрутки, которые делают что-либо. Я добавил несколько методов делегата прокрутки и только что добавил NSLog (), чтобы я мог выяснить, когда и где происходят изменения, но это не происходит нигде в моем коде.
Итак, я не знаю, какой код я могу показать вам, чтобы помочь вам помочь мне.
РЕДАКТИРОВАТЬ: Я создал новый проект с нуля, чтобы удалить все другие переменные .. Я поместил пустой UIViewController в UINavigationController. Я поместил UIScrollView в мой просмотр на весь размер представления. Следующий код - это весь проект.
Оказывается, проблема (описанная ниже) появляется только после того, как на UIScrollView включена PAGING! WTF? :)
Вот ссылка на скачивание базового проекта с несколькими строками кода, который демонстрирует проблему. Просто нажмите на вид прокрутки, и вы увидите, что он смещается вверх по мере изменения границ.http://inadaydevelopment.com/stackoverflow/WeirdScrollViews.zip
Как я могу включить пейджинг в моем просмотре прокрутки, чтобы при прокрутке и смещении не было границ во время прокрутки?
Возможно установить панель навигации непрозрачной, и проблема устранена, но в идеале рекомендуется иметь стандартное поведение iOS7, чтобы после масштабирования представления контента ТОГДА контент мог находиться под панелью навигации и должен нормально показываться через полупрозрачность.
- (void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSArray *colors = @[
[UIColor blueColor],
[UIColor orangeColor],
[UIColor magentaColor],
];
NSArray *zoomerColors = @[
[UIColor greenColor],
[UIColor yellowColor],
[UIColor purpleColor],
];
self.scroller.pagingEnabled = YES;
[self.scroller setContentSize:CGSizeMake(self.scroller.frame.size.width*colors.count, self.scroller.frame.size.height)];
CGRect subviewFrame = CGRectMake(0, 0, 160, 240);
for (int index=0; index < colors.count; index++) {
UIColor *color = [colors objectAtIndex:index];
UIColor *zoomerColor = [zoomerColors objectAtIndex:index];
UIView *subview = [[UIView alloc] initWithFrame:subviewFrame];
subview.backgroundColor = color;
CGRect zoomerFrame = CGRectMake(index*self.scroller.frame.size.width, 0, self.scroller.frame.size.width, self.scroller.frame.size.height);
UIScrollView *zoomer = [[UIScrollView alloc] initWithFrame:zoomerFrame];
[zoomer addSubview:subview];
zoomer.backgroundColor = zoomerColor;
[self.scroller addSubview:zoomer];
}
}