首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在特定时间手动触发“自动调整”

在特定时间手动触发“自动调整”
EN

Stack Overflow用户
提问于 2016-12-05 01:12:44
回答 1查看 77关注 0票数 1

我有一个UINavigationController,包含一个UIViewController,它是两个UITableViewController控制器的父级。

当用户点击导航控制器的UIToolbar中的分段控件时,当前子表控制器将与新的子表控制器互换。这包括从父层次结构中删除旧控制器,并将其视图作为父视图控制器的子视图删除。

第一个视图控制器是在导航视图控制器第一次出现时显示的,它的contentInsetautomaticallyAdjustsScrollViewInsets正确配置,但是,当我从第二个表视图控制器中取出该视图并插入视图时,该视图控制器没有正确配置。

此外,如果我旋转设备(这缩小了UINavigationBar),然后切换回第一个视图控制器,那么它的contentInset现在是不正确的,并且它不能正确滚动。然而,第二个控制器由于设备旋转而正确地设置了它的contentInset属性。

是否有一种方法可以在需要时手动强制UIViewController重做其automaticallyAdjustsScrollViewInsets操作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-08 18:54:01

这不是一个绝对令人惊奇的方法,但我找到了一个可行的解决方案。

插入一个新的子视图控制器不足以触发UINavigationController,从而自动计算出新子视图中任何滚动视图的适当contentInset值。但!你可以强迫它通过做一些无论如何都需要它的事情来执行这个计算。例如,隐藏并显示导航条或工具栏。

代码语言:javascript
运行
复制
- (void)insertViewController:(UIViewController *)viewController
{
    // Add the view to our view
    viewController.view.frame = self.view.bounds;
    [self.view addSubview:viewController.view];

    // Add the new controller as a child
    [self addChildViewController:viewController];
    [viewController didMoveToParentViewController:self];

    // Show and hide the toolbar to force the content inset calculation
    self.navigationController.toolbarHidden = YES;
    self.navigationController.toolbarHidden = NO;
}

我对它进行了测试,通过快速隐藏导航条或工具栏似乎没有视觉故障,因此这个解决方案似乎是可以接受的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40965731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档