当使用UIAppearance(仅限iOS 5)指定字体时,UINavigationBar标题行为异常
我正在使用UIAppearance设置应用程序中UINavigation栏标题的字体 如果我没有设置外观字体,标题会立即出现,正如预期的那样,并且它的显示不会设置动画 但是,当我使用UIAppearance指定替代字体时,标题会显示(使用指定的字体),但在iOS 5上加载时会使用某种动画转换。它有时也会暂停(?),只显示标题的第一个字符。如果我来回切换选项卡,标题将正确显示 我只在iOS 5上看到这个问题,在iOS 6上用字体设置标题是正确的 这个问题也可以在iOS 5的模拟器上看到,并且在模拟器中的iOS 6也可以正常运行 我在AppDelegate中设置了外观,如下所示当使用UIAppearance(仅限iOS 5)指定字体时,UINavigationBar标题行为异常,ios,uiappearance,Ios,Uiappearance,我正在使用UIAppearance设置应用程序中UINavigation栏标题的字体 如果我没有设置外观字体,标题会立即出现,正如预期的那样,并且它的显示不会设置动画 但是,当我使用UIAppearance指定替代字体时,标题会显示(使用指定的字体),但在iOS 5上加载时会使用某种动画转换。它有时也会暂停(?),只显示标题的第一个字符。如果我来回切换选项卡,标题将正确显示 我只在iOS 5上看到这个问题,在iOS 6上用字体设置标题是正确的 这个问题也可以在iOS 5的模拟器上看到,并且在模拟
[[UINavigationBar appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:FONT_OF_ALL_KNOWLEDGE size:0.0f], UITextAttributeFont,
nil]];
在viewDidLoad中为每个[选项卡式]视图设置栏的标题
- (void)viewDidLoad
{
[super viewDidLoad];
[self.navigationItem setTitle:@"Title"];
}
是否有其他人看到此问题,是否有解决方案?谢谢
更新
我曾尝试在viewDidLoad中显式设置字体(就在设置标题之前),而不是使用UIAppearance,但我仍然看到相同的问题,并且仍然只在iOS 5上出现。也有类似的问题。在iOS<6.0上的代码(
self.title=@“title”
)中设置MyUINavigationBar
s时,仅显示标题的一个字符
我通过使用大于0.0
的字体大小修复了此问题:
[[UINavigationBar appearance] setTitleTextAttributes:@{
UITextAttributeFont : [UIFont fontWithName:@"HelveticaNeue-Medium" size:20.0]
}];
我最终通过创建以下
UIViewController
category解决了问题:
#import <UIKit/UIKit.h>
@interface UIViewController (A4UExtras)
+ (NSDictionary *)defaultTitleTextAttributes;
@end
#import "UIViewController+A4UExtras.h"
@implementation UIViewController (A4UExtras)
+ (NSDictionary *)defaultTitleTextAttributes
{
NSDictionary *navBarTextAttributes = @{
UITextAttributeTextColor : [UIColor whiteColor],
UITextAttributeFont : [UIFont fontWithName:@"Avenir-Book" size:17.0],
UITextAttributeTextShadowColor : [UIColor colorWithRed:0 green:0 blue:0 alpha:.35],
UITextAttributeTextShadowOffset : @1,
};
return navBarTextAttributes;
}
@end
它就像一个符咒!希望它对你也有用 使用以下代码:
[[UINavigationBar appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:FONT_OF_ALL_KNOWLEDGE size:0.0f], UITextAttributeFont,
nil]];
// Present a temp UIViewController
UIViewController *vc = [[UIViewController alloc]init];
[self presentViewController:vc animated:NO completion:nil];//"self" is an instance of UIViewController
[vc dismissViewControllerAnimated:NO completion:nil];
这看起来不太好,但很有效
[[UINavigationBar appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:FONT_OF_ALL_KNOWLEDGE size:0.0f], UITextAttributeFont,
nil]];
// Present a temp UIViewController
UIViewController *vc = [[UIViewController alloc]init];
[self presentViewController:vc animated:NO completion:nil];//"self" is an instance of UIViewController
[vc dismissViewControllerAnimated:NO completion:nil];