iOS - UIToolbar 从后台返回后调整大小

Posted

技术标签:

【中文标题】iOS - UIToolbar 从后台返回后调整大小【英文标题】:iOS - UIToolbar resized after returning from background 【发布时间】:2011-10-24 12:53:36 【问题描述】:

我有一个工具栏,我已经对其进行了操作,以占用更多的屏幕空间。问题是当应用程序从后台返回时,它会重新调整为库存大小,而我似乎无法再次调整它的大小。

我目前如何修改它只是通过self.naviagtionController.toolbar.frame = CGRectMake(X,Y,W,H);

我也在使用 navigationController 工具栏。 (而且我有一个非常具体的原因使用 navigationControllers 工具栏)

【问题讨论】:

您在何时何地进行此操作? 我已经直接在 AppDelegate 上试过了,我也试过在 UIViewController 上设置它们,在应用程序重新回到前台后,两者似乎都将工具栏调整为库存尺寸。跨度> 您是否尝试在控制器的 viewWillAppear 方法中执行此操作? 是的,尽管当 App 返回前台时不会调用 viewWillAppear。 【参考方案1】:

因此,您对应用程序的检查变为活动通知,然后设置工具栏大小。然后,您设置自定义大小,并在设置大小后出现一些东西并将其更改回默认大小。是这样的吗?

我认为会有更好的方法来做到这一点,但是......

您可以尝试将更改延迟到主运行循环执行。为此,您可以使用 GCD 将操作放在后台线程上,然后再将其放回主线程上。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^
    dispatch_async(dispatch_get_main_queue(), ^
        // set toolbar frame
        self.naviagtionController.toolbar.frame = CGRectMake(X,Y,W,H);
    );
);

【讨论】:

这段代码似乎对我不起作用...... dispatch_get_main_queue 似乎没有采用这些参数。至少 Xcode 没有告诉我它没有。 你是对的。我复制和粘贴失败。 dispatch_get_main_queue 没有参数。当我连续剪切并粘贴 2 行时,我把它们留在了里面。我修复了上面的代码。

以上是关于iOS - UIToolbar 从后台返回后调整大小的主要内容,如果未能解决你的问题,请参考以下文章

UIToolbar 的动画调整大小导致在 iOS <5.1 上剪切背景

IOS11旋转设备时UIToolbar左右间距

iOS – UIToolbar 的动画故障

iOS 7.1 UINavigationbar 和 UIToolbar

iOS:应用程序从后台返回后访问 EAOutputStream 时的 SIGPIPE

为啥从搜索栏退出键盘后会留下 UIToolbar?