iOS 設置自帶UISearchBar的背景顏色

iOS 設置自帶UISearchBar的背景顏色

 

前言

原由是首先今天開始了一個新的項目,而後首頁有個UITabBar並且背景是透明的,原本心想這也沒啥,以前也作過很多相似的,直接複製粘貼不就OK了嘛!,而後粘過來後才發現代碼都失效了(均爲iOS8以前的修改方法),而後又各類百度、各類谷歌試了半天也沒啥卵用,最後在一個角落發現一個方法修改爲功,遂記錄下來。字體

方法說明

此方法與以前的方法不一樣,以前的都是經過遍歷將子View remove掉或者經過KVO來修改,因此當iOS系統版本發生變化的時候,可能就會受到影響(好像如今就受到了影響/(ㄒoㄒ)/~~)。本方法是直接設置搜索欄的背景圖片,使用的是系統的API,風險明顯就下降了吧。spa

一、先進行圖片的生成(代碼生成),也能夠經過UI設計師預先切好的圖片。設計

/**
 *  生成圖片
 *
 *  @param color  圖片顏色
 *  @param height 圖片高度
 *
 *  @return 生成的圖片
 */
- (UIImage*) GetImageWithColor:(UIColor*)color andHeight:(CGFloat)height
{
    CGRect r= CGRectMake(0.0f, 0.0f, 1.0f, height);
    UIGraphicsBeginImageContext(r.size);
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, r);

    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return img;
}

二、而後就能夠設置了code

UIImage* searchBarBg = [self GetImageWithColor:[UIColor clearColor] andHeight:32.0f];
        //設置背景圖片
        [_searchBar setBackgroundImage:searchBarBg];
        //設置背景色
        [_searchBar setBackgroundColor:[UIColor clearColor]];
        //設置文本框背景
        [_searchBar setSearchFieldBackgroundImage:searchBarBg forState:UIControlStateNormal];

OK,這樣就大功告成了!orm

其餘設置

一、設置字體顏色、默認字體顏色等圖片

UITextField *searchField = [_searchBar valueForKey:@"_searchField"];
searchField.textColor = [UIColor whiteColor];
[searchField setValue:[UIColor whiteColor] forKeyPath:@"_placeholderLabel.textColor"];

二、修改放大鏡rem

UIImage *image = [UIImage imageNamed:@"cl_tab2_gray"];
UIImageView *iconView = [[UIImageView alloc] initWithImage:image];
iconView.frame = CGRectMake(0, 0, image.size.width , image.size.height);
searchField.leftView = iconView;
相關文章
相關標籤/搜索