关闭模式视图后标签栏文本太大

Posted

技术标签:

【中文标题】关闭模式视图后标签栏文本太大【英文标题】:Tab bar text is too big after dismissing a modal view 【发布时间】:2015-10-16 15:35:57 【问题描述】:

在我的应用程序中,我有一个 TabBar 和一个 ViewController,它们通过使用 DelegateProtocol 以模态方式呈现。虽然一切都按预期工作,但我收到了一个奇怪的错误。当我关闭我的模态 ViewController 时,TabBarItems 的标签比以前大。之后即使调整大小也不起作用。

我正在像这样解雇我的模态 ViewController:

-(void)universalLoginFinished:(UniversalLoginModalViewController *)viewController 
    NSLog(@"Login successful");
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    appDelegate.isLoggedIn = YES;
    [self dismissViewControllerAnimated:YES completion:^
        [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"MerriweatherSans-Regular" size:18.0f], NSFontAttributeName, nil] forState:UIControlStateNormal];
        self.tabBarController.tabBar.translucent = NO;
        [self.tabBarController.tabBar setTintColor:UIColorFromRGB(0x0077B3)];
        [self viewDidLoad];
    ];

编辑

调用和关闭模态视图之前的我的 TabBar

调用和关闭模态视图后的我的 TabBar

我是否忘记了导致我的 TabBarItems 的标签变大的东西,还是我做错了什么?

【问题讨论】:

可以添加截图吗?还请解释你为什么从一个方法调用 viewdidload ? 我马上添加截图。在关闭模态视图后,我调用它来重新加载我的视图。 [self.view setNeedsDisplay] 不适合我。 18号字体?也是以前的字体吗? 是的,我只使用 18.0f 作为商品标签的尺寸。 试着把它变成 9 看看,它的标签仍然扩大。我确定,这和大小有关!!! 【参考方案1】:

您已将字体大小设置为 18.0,这应该是它的样子。并且不清楚为什么在关闭模态视图控制器并调用ViewDidLoad 后需要更新标签栏外观。我想如果你设置completion:nil,你的问题就会消失。

您可能会采用一些更好的方法。就像您可以在 AppDelegate 中编写一个加载 TabBarController 及其 viewControllers 的方法。因此,首先您将登录屏幕显示为窗口的 RootViewController,然后登录完成后,您可以调用该方法从 AppDelegate 加载TabBarController

【讨论】:

感谢您的意见。我已根据您答案的第一部分更改了我的代码,但它并没有改变行为。我的标签还是太大了。【参考方案2】:

在应用进一步测试后,我注意到字体负责更大的标签。我使用自定义字体“MerriWeatherSans-Regular”,它似乎与[UIFont fontWithName:fontName] 方法不兼容。使用“MerriWeatherSans”后,一切都按预期工作。

虽然它现在可以工作,但我感到很困惑,因为“MerriWeatherSans-Regular”在我的应用程序中的其他 ViewControllers 中工作。

为了完整起见,这里是我的最终代码:

-(void)universalLoginFinished:(UniversalLoginModalViewController *)viewController 
    NSLog(@"Login successful");
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    appDelegate.isLoggedIn = YES;

    [self dismissViewControllerAnimated:YES completion:nil];
    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"MerriweatherSans" size:18.0f], NSFontAttributeName, nil] forState:UIControlStateNormal];
    self.tabBarController.tabBar.translucent = NO;
    [self.tabBarController.tabBar setTintColor:UIColorFromRGB(0x0077B3)];

【讨论】:

以上是关于关闭模式视图后标签栏文本太大的主要内容,如果未能解决你的问题,请参考以下文章

关闭模态呈现的视图控制器后切换标签栏控制器视图控制器

使用标签栏关闭视图控制器后动画不会停止

iOS - 关闭视图控制器后标签栏变为透明

显示和关闭视图控制器后,iOS 7.1 上的标签栏背景丢失

模态视图控制器隐藏标签栏

iOS 7 - 后退按钮后标签栏消失