2011-07-29 77 views
38

UISearchBar 1px black border删除UISearchBar下的1px边框

我无法直接在UISearchBar视图下删除1px边框。现在它看起来与我完成的按钮视图不匹配。我试过了:

searchBar.layer.borderWidth = 0; 
searchBar.layer.shadowOpacity = 0; 

但是,这似乎并没有工作。有任何想法吗?

+0

也许是设计的一部分? – apscience

回答

88

没关系,我只是做:

searchBar.layer.borderWidth = 1; 
searchBar.layer.borderColor = [[UIColor whiteColor] CGColor]; 

和它的作品!

+1

这不适合我。当我在searchBar.layer之后尝试自动完成时,我没有任何选项。 任何想法为什么? – budidino

+3

好吧,我不得不:#import budidino

+0

它工作的唯一原因是因为您将边框颜色设置为您视图的背景颜色。但这是迄今为止我发现的最佳解决方案。 – testing

48
[searchBar setBackgroundImage:[UIImage new]]; 
+1

我认为这是一个iOS 7+解决方案,这正是我所需要的。谢谢! – rob5408

+0

这是正确的答案 – RPallas

+0

这取决于您使用的背景颜色。 – testing

3

为了在Xamarin形成了克服这一点,你需要创建一个CustomRendererSearchBar类。 像这样:

using System; 
using Xamarin.Forms.Platform.iOS; 
using Xamarin.Forms; 
using MyProject.iOS; 

[assembly: ExportRenderer(typeof(SearchBar), typeof(CustomSearchBarRenderer))] 
namespace MyProject.iOS 
{ 
    public class CustomSearchBarRenderer:SearchBarRenderer 
    { 
     protected override void OnElementChanged (ElementChangedEventArgs<Xamarin.Forms.SearchBar> e) 
     { 
      base.OnElementChanged (e); 
      if (this.Control == null) return; 

      this.Control.BackgroundImage = new UIKit.UIImage(); 
     } 
    } 
} 
+1

你能解释这是如何工作的,为什么更简单的答案不够好? – meneldal

13

对于斯威夫特版本,在iOS9测试:

searchBar.backgroundImage = UIImage() 

这将表明这样的:

no-border-result