0

我正在尝试使用 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 0x5e695 0x5dd78 0x217aa 0x789386 0x78a274 0x799183 0x799c38 0x78d634 0x203bef5 0x1e7c195 0x1de0ff2 0x1ddf8da 0x1dded84 0x1ddec9b 0x789c65 0x78b626 0x2164d 0x2895 0x1) terminate called throwing an exception"

上面的方法与 UITabBar 和 UINavigationBar 配合得很好。

有什么见解吗?

首先十分感谢。

4

3 回答 3

3

试试这个,它适用于 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],
      }];
}
于 2013-10-03T13:45:29.203 回答
1

查看 uisearchbar 的 Apple 参考指南,在自定义外观下,您可以查看哪些方法可用于 uisearchbar。SetTitleAttributes 对于 uisearchbar 是不可能的,我看不到另一种通过外观更改 uisearchbar 字体的方法。

试图调用一个对象不支持的方法,总是会给你一个错误。在您的情况下,其他类支持 setTitleArtributes,但遗憾的是不支持 uisearchbar。

有一个解决方法

于 2012-05-28T10:13:55.257 回答
0

尝试使用此代码

UITextField *textField = [self.searchBar valueForKey: @"_searchField"];
[textField setFont:[UIFont fontWithName:@"HelveticaNeue-Light" size:17.0]];

希望这对你有用。

于 2015-11-10T08:36:09.033 回答