更改UISearchBar iOS 7的字体大小和字体样式

SWT*_*SWT 25 objective-c uitextfield uisearchbar ios7

如何在iOS 7中更改UISearchBar的字体大小和字体样式?

UITextField *textField = [[searchBar subviews] objectAtIndex:1];
[textField setFont:[UIFont fontWithName:@"Helvetica" size:20]];
Run Code Online (Sandbox Code Playgroud)

在iOS 6中工作,但它在iOS 7中崩溃了

Siv*_*iva 67

试试这个,它适用于iOS 5.0及以上版本:( iOS 7也)

- (void)viewDidLoad
{

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setFont:[UIFont fontWithName:@"Helvetica" size:20]];

}
Run Code Online (Sandbox Code Playgroud)

适用于iOS 8

- (void)viewDidLoad
    {

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setDefaultTextAttributes:@{
            NSFontAttributeName: [UIFont fontWithName:@"Helvetica" size:20],
      }];

    }
Run Code Online (Sandbox Code Playgroud)

  • 我对此有一个小问题.我已经实现了同样的工作.但是如果我导航到某个视图控制器并返回到同一个屏幕,则字体将更改为default.Any Idea? (3认同)

joe*_*l.d 34

在iOS 7.1上,我接受的答案对我不起作用.我不得不改变它:

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setDefaultTextAttributes:@{
            NSFontAttributeName: [UIFont fontWithName:@"Avenir-Heavy" size:20.],
}];
Run Code Online (Sandbox Code Playgroud)

  • 这种方式克服了Ganesh评论中提到的[在iOS 8.0上试过]的问题(通过仅使用setFont而不是setDefaultTextAttribute,文本仅在第一个视图上更改,而不是在问题中导航回屏幕后). (3认同)

Pio*_*sik 6

iOS 10 Swift 3:

UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).defaultTextAttributes = [NSFontAttributeName:UIFont(name: "Avenir-Heavy", size: 22)!]
Run Code Online (Sandbox Code Playgroud)