删除视图和搜索栏之间的边框

时间:2015-07-25 22:01:56

标签: ios xcode swift

所以在Xcode中我试图创建一个无缝的搜索栏。所以我试图复制像这样的东西

enter image description here

请注意状态栏与搜索栏的颜色相同。现在,这是我的方法的结果。

enter image description here

我所做的是添加一个视图以覆盖蓝色背景的默认状态栏。然后我添加了一个搜索栏并将其背景改为蓝色。出于某种原因,我最终在两者之间形成了一个黑色边框,这使得无缝的#34;设计。关于如何在Swift中删除黑色边框的任何想法?

7 个答案:

答案 0 :(得分:26)

对于iOS 7 +:

searchBar.backgroundImage = UIImage()

否则这将适用于所有iOS版本:

searchBar.layer.borderWidth = 1
searchBar.layer.borderColor = thatBlueColor.CGColor

答案 1 :(得分:4)

在我的情况下,超出搜索栏的边缘需要关闭边缘也是导航栏。

C#代码:

NavigationController.NavigationBar.ShadowImage = new UIImage();
NavigationController.NavigationBar.SetBackgroundImage (new UIImage (), UIBarMetrics.Default);

Swift代码:

self.navigationController.navigationBar.shadowImage = UIImage()
self.navigationController.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)

答案 2 :(得分:2)

在Xcode 8.3和Swift 3中

  1. 从搜索栏创建一个插座到ViewController(我为此示例调用了我的searchBarOutlet)。

  2. 在viewDidLoad下面插入以下内容。

    self.searchBarOutlet.backgroundImage = UIImage()

  3. 您应该拥有以下内容:

        override func viewDidLoad() {
        super.viewDidLoad()
    
             self.searchBarOutlet.backgroundImage = UIImage()
    

    当您运行应用程序时,线条将消失(它们仍会在故事板上显示)。

答案 3 :(得分:1)

我发现这些答案比他们需要的更复杂。您可以修改将searchBar视图和另一个视图绑定到-1pts的约束,使其与searchBar的边距高度重叠。

答案 4 :(得分:1)

删除顶部和底部默认边框的最佳解决方案是:

viewDidLoad中设置新的空搜索栏背景布局,例如:

searchBar.backgroundImage = UIImage()

答案 5 :(得分:1)

雨燕4

searchBar.barTintColor = UIColor.white
searchBar.setBackgroundImage(UIImage.init(), for: UIBarPosition.any, barMetrics: UIBarMetrics.default)

示例图片

enter image description here

导航栏和搜索栏背景颜色的最新示例代码:

导航栏颜色

self.navigationController?.navigationBar.barTintColor = .blue

搜索栏颜色

searchBarProperty.backgroundColor = self.navigationController?.navigationBar.barTintColor

注意:导航栏和搜索栏的颜色必须相同。

带有蓝色导航栏和蓝色搜索栏的示例图像 enter image description here

答案 6 :(得分:0)

当我将statusBar和searchBar设置为半透明时,我遇到了相同的情况。 在这种情况下,我无法解决这里写的答案,但是可以通过以下方法解决。

  • 将UIVisualEffectView放在self.view(VC的视图)上
  • 使searchBar成为自定义类,背景是透明的
  • (也让statusBar透明)

(swift4代码)

    class TransparentSearchBar: UISearchBar {
        override init(frame: CGRect) {
            super.init(frame: frame)
        }

        required init?(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }

        override func layoutSubviews() {
            super.layoutSubviews()
            makeTransparentBackground()
        }

        private func makeTransparentBackground() {
            for view in self.subviews {
                view.backgroundColor = UIColor.clear
                for subview in view.subviews {
                    if let imageview = subview as? UIImageView {
                        imageview.image = nil
                    }
                }
            }
        }

    }

viewDidLoad(statusBar)中的某个地方

    let statusWindow = UIApplication.shared.value(forKey:"statusBarWindow") as! UIView
    let statusBar = statusWindow.subviews[0] as UIView
    statusBar.backgroundColor = UIColor.clear