如何在iOS5的UISearchBar中更改字体?
我试图使用新的“外观”代理对iOS5的改变我所有的UISearchBar对象的字体的东西,如:如何在iOS5的UISearchBar中更改字体?
[[UISearchBar appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor], UITextAttributeTextColor,
[UIFont fontWithName:@"Trebuchet MS" size:0.0], UITextAttributeFont,
nil]];
我每次运行它,我得到这个错误:
“2012-05-28 03:01:52.264 DirectDx_ClientApp [30039:15503] *终止应用程序由于未捕获的异常 'NSInvalidArgumentException',原因是: ' - [_ UIAppearance setTitleTextAttributes:]:无法识别的选择发送到实例0x8460cf0' *第一次调用堆栈: (0x1ea8022 0x3a4fcd6 0x1ea9cbd 0x1e0eed0 0x1e0ecb2 0x5e6 95 0x5dd78 0x217aa 0x789386 0x78a274 0x799183 0x799c38 0x78d634 0x203bef5 0x1e7c195 0x1de0ff2 0x1ddf8da 0x1dded84 0x1ddec9b 0x789c65 0x78b626 0x2164d 0x2895为0x1) 终止称为抛出异常”
上述方法工作得很好与UITabBar和UINavigationBar的。
任何见解?
非常感谢。
签出uisearchbar的苹果参考指南,在自定义外观下,您可以看到哪些方法可以通过uisearchbar进行验证。 SetTitleAttributes对于uisearchbar是不可能的,我看不到另一种方法,通过外观来更改uisearchbar的字体。
试图调用一个对象不支持的方法,将总会给你一个错误。在你的情况下,setTitleArtributes由其他类支持,但遗憾的是不适用于uisearchbar。
有一个workaround。
非常感谢您的回答。有趣的是,我昨晚看了参考指南,但凌晨2点我非常ble and,我发誓我看到了“setTitleTextAttributes”!我担心解决方法是我现在唯一的选择。再次感谢。 – luckman777
试试这个,它的正常工作适用于iOS 5.0及以上(的iOS 7还):
- (void)viewDidLoad
{
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setFont:[UIFont fontWithName:@"Helvetica" size:20]];
}
对于iOS 8
- (void)viewDidLoad
{
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setDefaultTextAttributes:@{
NSFontAttributeName: [UIFont fontWithName:@"Helvetica" size:20],
}];
}
尝试使用此代码
UITextField *textField = [self.searchBar valueForKey: @"_searchField"];
[textField setFont:[UIFont fontWithName:@"HelveticaNeue-Light" size:17.0]];
希望这将为你工作。
检查[this](http://*.com/a/4697842/845115) –
@Mudit - 谢谢。 – luckman777
'[UITextField appearanceWhenContainedIn:[NSArray arrayWithObject:[UISearchBar class]]'可能会工作。 –