我正在使用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"];
}
有没有其他人看过这个问题,是否有修复?感谢。
更新
我尝试在viewDidLoad中显式设置字体(在设置标题之前),而不是使用UIAppearance,我仍然看到同样的问题,但仍然只在iOS 5上。
答案 0 :(得分:1)
我最终通过创建以下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";
}
它就像一个魅力!希望它也适合你!
答案 1 :(得分:0)
有类似的问题。我的UINavigationBar
只会在iOS上的代码(self.title = @"Title"
)中设置时显示标题的一个字符&lt; 6.0。
我通过使用大于0.0
的字体大小来修复此问题:
[[UINavigationBar appearance] setTitleTextAttributes:@{
UITextAttributeFont : [UIFont fontWithName:@"HelveticaNeue-Medium" size:20.0]
}];
答案 2 :(得分:0)
使用此代码:
[[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];
似乎不太好,但是工作!