gpt4 book ai didi

ios - UIPageViewController 内的 UINavigationController 垂直滚动,导航栏高度损坏

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:30 28 4
gpt4 key购买 nike

我正在使用 UIPageViewController 来显示几个 Controller ,第一个是 UINavigationController,乍一看它看起来不错,但是当你滚动到下一个时,第一个导航栏会改变高度,并将标题直接放在状态栏下方.我已经搜索过堆栈溢出,但找不到我的问题的任何答案。

简单演示:https://github.com/augard/PageScrollingBug

最佳答案

我以一种非常 hacky 的方式解决了这个问题——子类化 UINavigationController 并调配了它的 navigationBarsetCenter: 方法(调配完成了 Aspects 库):

// In subclassed UINavigationController:

- (void) viewDidLoad
{
[super viewDidLoad];

// This just fixes this bug: http://stackoverflow.com/q/23471624/299063
UINavigationBar *navigationBar = self.navigationBar;
[navigationBar aspect_hookSelector:@selector(setCenter:) withOptions:AspectPositionInstead usingBlock:^(id<AspectInfo> aspectInfo)
{
NSValue *centerValue = aspectInfo.arguments[0];
CGPoint center = [centerValue CGPointValue];
CGPoint fixedCenter = CGPointMake(center.x, 20 + navigationBar.bounds.size.height/2);
[[aspectInfo originalInvocation] setArgument:&fixedCenter atIndex:2];
[[aspectInfo originalInvocation] invoke];
}
error:nil];
}

我还必须在导航 Controller 的子 Controller 中将 automaticallyAdjustsScrollViewInsets 设置为 NO,否则导航栏在第一次出现时仍然会定位错误:

// In child controller of UINavigationController.
self.automaticallyAdjustsScrollViewInsets = NO;

可能有正确的方法,但我没有时间。

关于ios - UIPageViewController 内的 UINavigationController 垂直滚动,导航栏高度损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23471624/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com