iOS版 - 自定义取消的UISearchBar的按钮(iOS - Customizing Canc

2019-06-25 12:37发布

在我的iOS5的iPhone应用程序,我设置使用下面的代码搜索栏的色调颜色:

searchBar.tintColor = UIColorMake(@"#EFEFEF");

#EFEFEF的RGB值是(239239239)
它的工作的罚款。 但是,当取消按钮上的文字“取消”是不可见的。 我只能跟定制上透明的黑白文本取消按钮?
是不是可以定制?

Answer 1:

您可以搜索UISearchBar子视图,找到了取消按钮,这是危险这样做,因为按钮可以改变例如,你可以在你添加此viewWillAppear

- (void) viewWillAppear:(BOOL)animated
{
    //show the cancel button in your search bar
    searchBar.showsCancelButton = YES;
    //Iterate the searchbar sub views
    for (UIView *subView in searchBar.subviews) {
        //Find the button
        if([subView isKindOfClass:[UIButton class]])
        {
            //Change its properties
            UIButton *cancelButton = (UIButton *)[sb.subviews lastObject];
            cancelButton.titleLabel.text = @"Changed";
        }
    }
}

正如我以前说过,这可能改变,其一个黑客这样做,你最好与原来的坚持,或者创建自己的搜索栏。



Answer 2:

您可以通过使用外观代理自定义在iOS 5上的取消按钮。 您需要更改的外观UIBarButtonItem包含在时UISearchBar 。 例如更改取消按钮,你可以使用的标题字体:

NSDictionary *attributes =
    [NSDictionary dictionaryWithObjectsAndKeys:
     [UIColor whiteColor], UITextAttributeTextColor,
     [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5], UITextAttributeTextShadowColor,
     [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset,
     [UIFont systemFontOfSize:12], UITextAttributeFont,
     nil];
[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil]
    setTitleTextAttributes:attributes forState:UIControlStateNormal];
[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil]
    setTitleTextAttributes:attributes forState:UIControlStateHighlighted];


Answer 3:

由于iOS5的可以编辑的导航栏,工具栏的TabBar和一些与此代码...

NSDictionary *textTitleOptions = [NSDictionary dictionaryWithObjectsAndKeys:
                                          [UIColor darkGrayColor], 
                                          UITextAttributeTextColor, 
                                          [UIColor whiteColor], 
                                          UITextAttributeTextShadowColor, nil];
[[UINavigationBar appearance] setTitleTextAttributes:textTitleOptions];

我haven't一个搜索栏测试,但它应该工作类似。



Answer 4:

此方法适用于IOS7

for (UIView *view in searchBar.subviews)
    {
        for (id subview in view.subviews)
        {
            if ( [subview isKindOfClass:[UIButton class]] )
            {
                // customize cancel button
                UIButton* cancelBtn = (UIButton*)subview;
                [cancelBtn setEnabled:YES];
                break;
            }
        }
    }

勾选此https://stackoverflow.com/a/18150826/1767686



文章来源: iOS - Customizing Cancel button of UISearchBar