• iOS学习篇之更改UISearchBar的背景为透明


    输入相关关键字在百度中能搜索出来很多,但是都不靠谱,于是Google了一下,在StackOverFlow中找到一个蛮靠谱的方法,试了可行。

    with iOS8 sdks apple moved @"UISearchBarBackground" view one level deeper, so have will need to look at subviews of the child-views as bellow,.

    for (UIView *subview in searchBar.subviews) {
            for(UIView* grandSonView in subview.subviews){
                if ([grandSonView isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
                    grandSonView.alpha = 0.0f;
                }else if([grandSonView isKindOfClass:NSClassFromString(@"UISearchBarTextField")] ){
                    NSLog(@"Keep textfiedld bkg color");
                }else{
                    grandSonView.alpha = 0.0f;
                }
            }//for cacheViews
        }//subviews

    耶!

    接下来,我又发现一位博主分享的文章,写的很详细,而且解决方案看起来会更加优雅,不像上面给的那样暴力粗鲁。^_^

    文章在这里

    这里贴出代码:

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // 1
        UIImage* clearImg = [CDViewController imageWithColor:[UIColor clearColor] andHeight:32.0f];
        // 2
        [_searchBar setBackgroundImage:clearImg];
        // 3
        [_searchBar setSearchFieldBackgroundImage:clearImg forState:UIControlStateNormal];
        // 4
        [_searchBar setBackgroundColor:[UIColor clearColor]];
    }
    
    + (UIImage*) imageWithColor:(UIColor*)color andHeight:(CGFloat)height
    {
        CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, height);
        UIGraphicsBeginImageContext(rect.size);
        CGContextRef context = UIGraphicsGetCurrentContext();
    
        CGContextSetFillColorWithColor(context, [color CGColor]);
        CGContextFillRect(context, rect);
    
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    
        return image;
    }

    修改APP内全局UISearchBar样式:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        UIColor* myColor = [UIColor colorWithRed:0 green:0.48 blue:1 alpha:1]; // set your desired background color here
    
        UIImage* clearImg = [CDViewController imageWithColor:[UIColor clearColor] andHeight:1.0f];
        UIImage* coloredImg = [CDViewController imageWithColor:myColor andHeight:32.0f];
    
        [[UISearchBar appearance] setBackgroundColor:[UIColor clearColor]];
        [[UISearchBar appearance] setBackgroundImage:clearImg];
        [[UISearchBar appearance] setSearchFieldBackgroundImage:coloredImg forState:UIControlStateNormal];
    
        return YES;
    }

    给ScopeBar设置透明背景:

    UIImage* clearImg = [CDViewController imageWithColor:[UIColor clearColor] andHeight:1.0f];
    
    [_searchBar setScopeButtonTitles:nil];
    [_searchBar setScopeBarBackgroundImage:clearImg];
    [_searchBar setScopeBarButtonBackgroundImage:clearImg forState:UIControlStateNormal];
    [_searchBar setScopeBarButtonDividerImage:clearImg forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal];
  • 相关阅读:
    第一个gulp程序
    r.js打包
    吃饭途中的回忆
    IE下script标签的readyState属性
    CSS 选择器
    html的base标签
    迷你MVVM框架 avalonjs 1.3.9发布
    2014年的年终总结
    Visual Studio2017 数据库架构比较
    MVC开发中自定义返回类型
  • 原文地址:https://www.cnblogs.com/emmet7life/p/4648383.html
Copyright © 2020-2023  润新知