在 iOS 7 中自定义 UISearchBar

Posted

技术标签:

【中文标题】在 iOS 7 中自定义 UISearchBar【英文标题】:Customising UISearchBar in iOS 7 【发布时间】:2013-09-24 09:48:17 【问题描述】:

我有一个UISearchBar,我想自定义其外观。 this post 中的建议在更新到 ios 7 之前有效。但现在我不知道该怎么做。我主要想自定义取消按钮。有人知道怎么做吗?

【问题讨论】:

这里回答的问题:***.com/questions/18956255/… 在 iOS 7 中不起作用。回答该问题的人提到他只在 iOS 6 上尝试过。 看看我对那个问题的回答。试过了,它适用于 iOS 7 :) 递归方法奏效了!谢谢你。也许你应该把它贴在这里,这样我才能接受答案。 :) 【参考方案1】:

您需要递归搜索按钮。这应该是一种万无一失的方法:

- (void)viewDidLoad

    [super viewDidLoad];

    [self convertButtonTitle:@"Cancel" toTitle:@"Annuller" inView:self.searchBar];


- (void)convertButtonTitle:(NSString *)from toTitle:(NSString *)to inView:(UIView *)view

    if ([view isKindOfClass:[UIButton class]])
    
        UIButton *button = (UIButton *)view;
        if ([[button titleForState:UIControlStateNormal] isEqualToString:from])
        
            [button setTitle:to forState:UIControlStateNormal];
        
    

    for (UIView *subview in view.subviews)
    
        [self convertButtonTitle:from toTitle:to inView:subview];
    

我仅在 iOS 7 上对此进行了测试,但它在 iOS 6 上也可以正常工作。

【讨论】:

谢谢,另外,我似乎无法更改取消按钮的框架。知道为什么吗? 不,还没有机会尝试。也许尝试在viewDidLayoutSubviews 中更改它? 嗯。当然。我会试一试。谢谢。 :) 那么它可能需要子类化 UISearchBar。 可能。我也会试试的。

以上是关于在 iOS 7 中自定义 UISearchBar的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 中自定义 TableViewCell 中的自动布局问题

如何在 iOS 中自定义 MPVolumeView?

在ios中自定义导航栏

如何在 iOS 中自定义权限请求视图

iOS 11 在导航栏中自定义搜索栏

在 iOS 中自定义 UIStatusBar