使用UIAppearance指定字体时,UINavigationBar标题performanceexception(仅适用于iOS 5)
我正在使用UIAppearance在我的应用程序中为我的UINavigation栏标题设置字体。
如果我没有设置外观字体,那么标题就会像预期的那样立即显示出来,而且它的显示效果不是animation的。
但是,当我使用UIAppearance指定一个替代字体时,标题会出现(使用指定的字体),但在iOS 5上使用某种animation转换显示。它有时会停顿(?),只显示标题的第一个字符。 如果我退后一步,标题显示正确。
我只在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中为每个[tabbed]视图设置,
- (void)viewDidLoad { [super viewDidLoad]; [self.navigationItem setTitle:@"Title"]; }
有没有其他人看到这个问题,有没有解决? 谢谢。
UPDATE
我已经尝试在viewDidLoad(只是在设置标题之前)中明确地设置字体,而不是使用UIAppearance,我仍然看到相同的问题,并且仍然只在iOS 5上。
有类似的问题。 我的UINavigationBar
只会在iOS 6.0中设置代码( self.title = @"Title"
)时显示标题的一个字符。
我通过使用大于0.0
的字体来解决此问题:
[[UINavigationBar appearance] setTitleTextAttributes:@{ UITextAttributeFont : [UIFont fontWithName:@"HelveticaNeue-Medium" size:20.0] }];
我最终通过创build下面的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
当然,按照您希望的方式configuration文本属性。 然后,在我所有的视图控制器的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];
这似乎不好,但工作!
- 错误使用未parsing的标识符GMSPlacePickerConfig&GooglePlacePicker? (Google Places 2.0)
- registerUserNotificationSettings不显示提示iOS 8
- 用于在iOS中实现完全自定义的containerViewController的类体系结构
- 在IOS 7中的UINavigationBar下的白线
- Swift中MVC的替代方法:基本MVVM结构
- 在真正的Apple Watch上调试WatchKit – 什么都没发生
- 跳转到节点层次结构中的特定SKNode
- Swift World:设计模式-工厂方法
- Swift:静态UITableViewCell中的TableView