解除模态视图后,标签栏文本太大

时间:2015-10-16 15:35:57

标签: ios objective-c

在我的应用程序中,我有一个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];
    }];
}

修改

My TabBar before calling and dismissing the modal view

在调用和解除模态视图之前我的TabBar

My TabBar before calling and dismissing the modal view

调用并解除模态视图后的我的TabBar

我是否忘记了导致我的TabBarItems标签增长的内容或者我做错了什么?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

在进一步测试后,我注意到字体负责较大的标签。我使用自定义字体“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)];
}