我正在使用UIScrollView作为我的分页滚动视图,
我的
但是,当我稍微滚动一下
左侧是加载时的样子,右侧是我拖动了几个像素后松开时的样子,它会向上滑动到导航栏下面(因为bounds.origin.y变成了0)。
问题是我没有任何修改bounds的代码,也没有在各种滚动委托方法中添加任何代码。我添加了一堆滚动委托方法,并只添加了NSLog()以便我可以弄清楚何时/何处发生更改,但没在我的代码中发现更改。
所以,我不知道我能向您展示哪些代码来帮助您帮助我。
编辑:我从头开始构建了一个新项目,以消除所有其他变量。我将裸的UIViewController放入UINavigationController中。我在View中放置了一个UIScrollView,大小与视图相同。以下是整个项目的所有代码。
结果发现当UIScrollView上启用PAGING时才会出现下述问题!它到底怎么回事?:)
这里有一个链接可下载一个具有少量代码的基本项目,该项目演示了问题。只需点击滚动视图,您就会看到它因bounds更改而向上移动。http://inadaydevelopment.com/stackoverflow/WeirdScrollViews.zip 如何在我的滚动视图上启用分页,而不会在滚动期间使bounds出现问题并将所有内容移动到导航栏下方?
可以将导航栏设置为不透明状态,这样就避免了问题,但理想情况下是要具有标准的iOS7行为,即在内容视图缩放后,然后允许内容处于导航栏下面,并应正常显示透明度。
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)。
问题是我没有任何修改bounds的代码,也没有在各种滚动委托方法中添加任何代码。我添加了一堆滚动委托方法,并只添加了NSLog()以便我可以弄清楚何时/何处发生更改,但没在我的代码中发现更改。
所以,我不知道我能向您展示哪些代码来帮助您帮助我。
编辑:我从头开始构建了一个新项目,以消除所有其他变量。我将裸的UIViewController放入UINavigationController中。我在View中放置了一个UIScrollView,大小与视图相同。以下是整个项目的所有代码。
结果发现当UIScrollView上启用PAGING时才会出现下述问题!它到底怎么回事?:)
这里有一个链接可下载一个具有少量代码的基本项目,该项目演示了问题。只需点击滚动视图,您就会看到它因bounds更改而向上移动。http://inadaydevelopment.com/stackoverflow/WeirdScrollViews.zip 如何在我的滚动视图上启用分页,而不会在滚动期间使bounds出现问题并将所有内容移动到导航栏下方?
可以将导航栏设置为不透明状态,这样就避免了问题,但理想情况下是要具有标准的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];
}
}