我已经找了很长一段时间的答案,但找不到任何能让我满意的答案。这是我在StackOverflow和我的第一个真正的应用程序中的第一个问题所以我希望我没有犯任何愚蠢的错误,我必须感到羞耻。
在我的应用程序中,我在导航控制器下有一个带有搜索栏的表。在Interface Builder中,我设置了搜索栏以匹配导航控制器的颜色。它们完全一样。 Interface Builder
然而,当应用程序运行时,搜索栏为slightly lighter,并且它有一些行将它与导航控制器分开。
当我按下搜索栏时,颜色会比应该更亮。 此外,在动画期间,您可以看到视图的白色背景,看起来不太好。
我尝试了不同的选项,从将背景更改为指定颜色到将backgroundImage设置为UIImage()。我无法获得平滑的效果。必须有一种方法来解决这个问题,可能是通过添加自定义图层或直接子类,但我只是想知道是否有一个简单的解决方案来解决我的问题。
我实际上正在使用搜索栏和搜索显示控制器。但它没有任何区别。有趣的是,我没有真正定制它的任何行为。即使我更改了添加到Storyboard的全新搜索栏的颜色,它仍然会显示不同的颜色。是否存在我不知道的行为?
答案 0 :(得分:0)
您是否尝试过使用搜索栏并搜索显示控制器。当用户点击搜索栏时,它会动画并向上推动导航栏。您可以更改它的颜色以匹配导航栏。您甚至可以通过编程方式(而不是在故事板中)在导航栏中添加searchBar以消除颜色问题。
以下是我在其他帖子中发现的一些可能有用的代码!
试试这个
var leftNavBarButton = UIBarButtonItem(customView:Yoursearchbar)
self.navigationItem.leftBarButtonItem = leftNavBarButton 更新
你保留了一个懒惰的UISearchBar属性
lazy var searchBar:UISearchBar = UISearchBar(frame: CGRectMake(0, 0, 200, 20))
在viewDidLoad
中searchBar.placeholder = "Your placeholder"
var leftNavBarButton = UIBarButtonItem(customView:searchBar)
self.navigationItem.leftBarButtonItem = leftNavBarButton
如果你想使用故事板,只需将你的搜索栏拖动为插座,然后用你的插座搜索器替换懒人属性
以下是我从第一个答案获得代码的地方:Get search bar in navigation bar in Swift
答案 1 :(得分:0)
我还没有使用过UISearchBar,所以这只是一个猜测,但它可能与UISearchBar的alpha
属性有关,因为它继承自UIView
。尝试将alpha设置为1.0,看看会发生什么:)
答案 2 :(得分:0)
所以我继续寻找解决方案而且我找到了一个解决方案。事实证明,我们可以在Interface Builder中使用的“搜索栏和搜索显示控制器”在iOS 8.0中已弃用。我甚至用一个导航控制器和上面提到的搜索栏制作了一个空白的应用程序,后者的颜色总是不合适。
我找不到任何解决方案,但设法改变了我的项目。现在我正在使用以编程方式添加的UISearchController。
let searchController = UISearchController(searchResultsController: nil)
tableView.tableHeaderView = searchController.searchBar
看起来好多了。但是为了确保我已经使用OS X库存色度计检查了颜色,它们仍然有所不同。它可能与半透明和下面的背景有关,我最终会解决这个问题,但现在它必须保持这样