我使用UIAppearance设置跨我的应用我的UINavigation栏标题的字体。
如果我不设置外观的字体,标题是立即出现,如预期,其表现不活跃。
然而,当我指定使用UIAppearance替代字体,标题显示(与指定的字体),但使用某种动画过渡的上装载出现在iOS 5.它还有时停止(α)和只显示标题的第一个字符。 如果我离开选项卡,然后再返回,正确显示的标题。
我看到的只有iOS 5的这个问题,并与字体设置标题上iOS 6的行为正确。
这个问题也可以看出在模拟器上的iOS 5,并再次与iOS 6在模拟器正确行为。
我将在AppDelegate的外观,如下...
[[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"];
}
有其他人看到这个问题,是有没有解决? 谢谢。
UPDATE
我试着在viewDidLoad中明确地设置字体(只设置标题前),而不是让UIAppearance的使用,我还是看到了同样的问题,还是在iOS 5只。
也有类似的问题。 我UINavigationBar
s就只显示标题的一个字符在代码(被设置时self.title = @"Title"
在iOS <6.0)。
我固定这通过使用字体大小大于0.0
:
[[UINavigationBar appearance] setTitleTextAttributes:@{
UITextAttributeFont : [UIFont fontWithName:@"HelveticaNeue-Medium" size:20.0]
}];
我终于通过创建以下解决问题UIViewController
类:
#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
当然,配置的文本属性,你希望他们的方式。 然后,在我所有的视图控制器的viewDidLoad
方法我做到以下几点:
#import "UIViewController+A4UExtras.h"
…
- (void)viewDidLoad
{
[super viewDidLoad];
// NavBar appearance and setup
self.navigationController.navigationBar.titleTextAttributes = [UIViewController defaultTitleTextAttributes];
self.navigationItem.title = @"My Title";
}
它就像一个魅力! 希望你的作品呢!
使用此代码:
[[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 title behaves oddly when specifying a font using UIAppearance (with iOS 5 only)