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 0x78d6340x203bef5 0x1e7c195 0x1de0ff2 0x799183 0x799c38 0x78d634 0x203bef5 0x1e7c195 0x1de0ff

上記の方法は、UITabBarおよびUINavigationBarで完全に機能します。

洞察はありますか?

よろしくお願いします。

4

3 に答える 3

3

これを試してみてください。iOS5.0以降(iOS 7でも)で正常に動作しています。

- (void)viewDidLoad
{
    [[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setFont:[UIFont fontWithName:@"Helvetica" size:20]];
}

iOS8の場合

- (void)viewDidLoad
{
        [[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setDefaultTextAttributes:@{
            NSFontAttributeName: [UIFont fontWithName:@"Helvetica" size:20],
      }];
}
于 2013-10-03T13:45:29.203 に答える
1

uisearchbarのアップルリファレンスガイドをチェックしてください。外観のカスタマイズの下で、uisearchbarに使用できるメソッドを確認できます。uisearchbarではSetTitleAttributesを使用できません。また、外観を使用して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 に答える