在我的应用程序中,我有一个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标签增长的内容或者我做错了什么?
答案 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)];
}