修改UISearchBar的背景色

修改UISearchBar的背景色,第1张

原文: https://www.jianshu.com/p/26f951f2a9b5

UISearchBar是由两个subView组成的,一个是UISearchBarBackGround,另一个是UITextField. 但是没有直接 *** 作背景的属性。方法一:是直接将 UISearchBarBackGround移去(这个方法ios13中不可用会闪退)。方法二:是创建一个UIView设置其颜色加载到UISearchBarBaceGround上作为UISearchBar的背景颜色

UISearchBar *seachBar=[[UISearchBar alloc] init]

//修改搜索框背景

seachBar.backgroundColor=[UIColor clearColor]

//去掉搜索框背景

//1.

[[searchbar.subviews objectAtIndex:0]removeFromSuperview]

//2.

for (UIView *subview in seachBar.subviews)

{

if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")])

{

[subview removeFromSuperview]

break

}

}

//3自定义背景

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"40-di.png"]]

[mySearchBar insertSubview:imageView atIndex:1]

//4输入搜索文字时隐藏搜索按钮,清空时显示

-(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {

searchBar.showsScopeBar = YES

[searchBar sizeToFit]

[searchBar setShowsCancelButton:YES animated:YES]

return YES

}

-(BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar {

searchBar.showsScopeBar = NO

[searchBar sizeToFit]

[searchBar setShowsCancelButton:NO animated:YES]

return YES

}

//改变搜索按钮文字

//改变UISearchBar取消按钮字体

for(id cc in [searchBar subviews])

{

if([cc isKindOfClass:[UIButton class]])

{

UIButton *btn = (UIButton *)cc

[btn setTitle:@"搜索" forState:UIControlStateNormal]

}

方法二:

UISearchBar* m_searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 44, 320, 41)]

m_searchBar.delegate = self

m_searchBar.barStyle =UIBarStyleBlackTranslucent

m_searchBar.autocorrectionType = UITextAutocorrectionTypeNo

m_searchBar.autocapitalizationType = UITextAutocapitalizationTypeNone

m_searchBar.placeholder = _(@"Search")

m_searchBar.keyboardType = UIKeyboardTypeDefault

//--->背景图片

UIView *segment = [m_searchBar.subviews objectAtIndex:0]

UIImageView *bgImage = [[UIImageView alloc] initWithImage: [UIImageimageNamed:@"Images/search_bar_bg.png"]]

[segment addSubview: bgImage]

//<---背景图片

[self.view addSubview:m_searchBar]

[m_searchBar release]

我们在IOS开发中,时常需要将一些原本是方形的图片剪切成圆形或者边框是曲线的样子,表现得活泼生动一些.

注意:因为最近在尝试用Swiftl开发,所以这里的语言使用的就是Swift,OC的语法也是相近的.

这是修改之前的:

然后这是修改之后的:

第一种:通过图形绘制

extension UIImage{

func createImage(isCornored: Bool = true,size: CGSize = CGSize.zero,backgroundColor: UIColor = UIColor.white,callBack: @escaping (_ image: UIImage) ->()) {

//在子线程中执行

DispatchQueue.global().async {

let rect = CGRect(origin: CGPoint.zero, size: size)

//1. 开启上下文

UIGraphicsBeginImageContext(size)

//2. 设置颜色

backgroundColor.setFill()

//3. 颜色填充

UIRectFill(rect)

//4. 图像绘制

//切回角

let path = UIBezierPath(ovalIn: rect)

path.addClip()

self.draw(in: rect)

//5. 获取图片

let image = UIGraphicsGetImageFromCurrentImageContext()

//6 关闭上下文

UIGraphicsEndImageContext()

//回到主线程刷新UI

DispatchQueue.main.async(execute: {

callBack(image!)

})

}

}

}

第二种:剪切圆角

//设置圆角半径(通过设置这个的大小,越接近你的矩形宽度,圆的形状越明显)

iconImageView.layer.cornerRadius = 50

//必做的一步

iconImageView.layer.masksToBounds = true

//设置边框宽度

iconImageView.layer.borderWidth = 5

//设置边框的颜色

iconImageView.layer.borderColor = UIColor.black

这两种方法都挺实用的,不过第二种比较简短,第一种适合用来提高自己的逼格吧.

你好,亲亲,袋鼠云官网轮播图背景图深色时导航栏文字为白色的实现方法,如下:

在开发中我们有时的需求是设置导航栏和标签栏的颜色,而实际我们如果直接设置背景颜色并不会达到我们预期的效果,设置的颜色只是浅浅的一层颜色,这是因为我们设置的背景色被覆盖了,并没有直接显示给我们。而我们如果效果达到预期的效果则需要调用设置背景图片的方法。

1.设置导航栏(navigationBar)的背景色:

[self.navigationBarsetBackgroundImage:[UIImageimageNamed:@"daohanglan_beijingditu"]forBarMetrics:UIBarMetricsDefault]

还有一设置导航栏背景色的方法:

[self.navigationController.navigationBar setBarTintColor:[UIColor whiteColor]]

2.设置标签栏(tabBar)的背景色:

self.tabBar.backgroundImage = [UIImageimageNamed:@"biaoqianlan_beijingtu"]


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11208452.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存