原由是首先今天開始了一個新的項目,而後首頁有個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;