为什么不透明样式不适用于SearchBar?

时间:2015-12-16 12:58:59

标签: ios swift uisearchbar

enter image description here

如何使搜索栏色调为全蓝色?

我试过了:

searchBar.opaque = true

searchBar.translucent = false

但它不起作用。为什么呢?

1 个答案:

答案 0 :(得分:4)

来自.opaque

的文档
  

var opaque:Bool {get set}

     

一个布尔值,用于确定视图是否不透明。

     

...

     

您只需要设置一个值   UIView的子类的opaque属性,用于绘制自己的内容   使用drawRect:方法。不透明属性对此没有影响   系统提供了诸如UIButton,UILabel,UITableViewCell等类,   等

因此,.opaque属性对原生UISearchBar没有影响;因此,在上面的例子中,searchBar.opaque没有效果。

关于.translucent属性,文档说明:

  

var translucent:Bool {get set}

     

一个布尔值,指示搜索栏是否为半透明   (true)与否(false)。

     

默认值为true。如果搜索栏具有自定义背景   如果图像的任何像素具有alpha,则默认为true   值小于1.0,,否则为

     

如果在具有不透明自定义的搜索栏上将此属性设置为true   在背景图片中,搜索栏将应用系统不透明度小于   1.0到图像。

     

如果您在半透明的搜索栏上将此属性设置为false   自定义背景图像,搜索栏提供不透明背景   对于图像如果搜索栏具有UIBarStyleBlack样式,则使用黑色,   如果搜索栏包含UIBarStyleDefault,或搜索栏,则为白色   barTintColor如果定义了自定义值

因此,要为搜索栏实现透明背景,您还需要为其设置背景图像,这已在前面的SO线程中进行了描述

在链接线程(Obj-C)中使用Mike的答案,我们可以根据以下内容适应swift:

searchBar.barTintColor = UIColor.clearColor()
searchBar.backgroundImage = UIImage()
searchBar.translucent = false

这应该是一个透明的搜索栏。