2011-07-29 79 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