我用UISearchBar创建了一个.xib。
在顶部边框下方还有一个阴影。
我尝试过改变背景/色调等,但努力让它消失。
欢迎任何帮助,任何想法?
修改
所以下面的代码允许我摆脱顶部和底部的边框,但不是奇怪的投影。我添加了绿色背景以更清楚地显示它。
此外,在文本框(而不是视图)周围添加边框的最佳方法是什么?感谢
// **这就是我要做的事:https://stackoverflow.com/questions/33107058/uiviewcontroller-sizing-as-maincontroller-within-uisplitviewcontroller
这是我正在使用的代码。
import UIKit
class TopSearchViewController: UIView {
var expanded: Int = 0
@IBOutlet weak var trailingConstraint: NSLayoutConstraint!
@IBOutlet var contentView: UIView!
@IBOutlet weak var searchBar: UISearchBar!
@IBAction func advancedSearchButton(sender: AnyObject) {
if expanded == 0 {
self.layoutIfNeeded()
UIView.animateWithDuration(0.1, animations: {
self.trailingConstraint.constant = 200
self.layoutIfNeeded()
})
expanded = 1
} else {
self.layoutIfNeeded()
UIView.animateWithDuration(0.1, animations: {
self.trailingConstraint.constant = 25
self.layoutIfNeeded()
})
expanded = 0
}
}
override init(frame: CGRect) { // for using CustomView in code
super.init(frame: frame)
self.commonInit()
}
required init(coder aDecoder: NSCoder) { // for using CustomView in IB
super.init(coder: aDecoder)
self.commonInit()
}
private func commonInit() {
NSBundle.mainBundle().loadNibNamed("TopSearchViewController", owner: self, options: nil)
contentView.frame = self.bounds
contentView.autoresizingMask = .FlexibleHeight | .FlexibleWidth
self.addSubview(contentView)
self.searchBar.layer.borderWidth = 1
self.searchBar.layer.borderColor = UIColor.whiteColor().CGColor
println(searchBar)
for subview in searchBar.subviews {
println("hello")
var textField : UITextField
if (subview.isKindOfClass(UITextField)) {
textField = subview as! UITextField
textField.borderStyle = .None
textField.layer.borderWidth = 1
textField.layer.borderColor = UIColor.lightGrayColor().CGColor
textField.layer.cornerRadius = 14
textField.background = nil;
textField.backgroundColor = UIColor.whiteColor()
}
}
}
func viewDidLoad() {
}
}
答案 0 :(得分:42)
将栏backgroundImage
设为空 UIImage
,不 nil
:
searchBar.backgroundImage = UIImage()
您也可以按照以下评论中的说明设置barTintColor
。
答案 1 :(得分:9)
使用Xcode 11,在情节提要中,您可以将“搜索样式”设置为“最小”。
在代码中:searchBar.searchBarStyle = .minimal
答案 2 :(得分:6)
我已经尝试了所有答案,但他们没有删除UISearchBar内部的UITextfield的1px内部阴影。
我通过增加白色边框的宽度解决了这个问题。 它重叠在阴影上。
searchBar.layer.borderWidth = 10
searchBar.layer.borderColor = UIColor.white.cgColor
答案 3 :(得分:3)
试试这个:
System.Windows.Forms
修改强>
我认为阴影是由内部searchBar.layer.borderWidth = 1
searchBar.layer.borderColor = UIColor.whiteColor().CGColor
引起的。试试以下代码:
UITextField
答案 4 :(得分:1)
#方法1
感谢@ andrewlundy,Storyboard方法就是这样。 (Xcode 11。*)
在情节提要板上选择UISearch(假设:您已经将UISearch栏拖到了UIView / UIViewController中)
转到Attribute Inspector
,您将看到Search Style
从Minimal
下拉列表中选择Search Style
。
就这样...
#方法2
否则如果您希望通过编程方式快速完成
在ViewController swift文件中为UISearch创建IBOutlet
searchBar.searchBarStyle = .minimal
在这里放置searchBar
而不是your UISearch outlet's name
答案 5 :(得分:0)
还有另一招:
对于底部边框,您可以通过俯仰视图(例如:tableView)按-1像素覆盖它。
对于顶部边框,将其向上移动1个像素到导航栏下方也可以解决此问题。
答案 6 :(得分:0)
我在swift5中使用了以下代码来实现搜索栏
let searchbar: UISearchBar =
{
let sear = UISearchBar()
sear.tintColor = Mycolor().lightgray1
sear.backgroundColor = Mycolor().lightgray1
sear.barTintColor = Mycolor().lightgray1
sear.placeholder = "Search Asset"
sear.layer.cornerRadius = 30
sear.barStyle = .default
sear.backgroundImage = UIImage()
// sear.addShadow(offset: CGSize(width: 10, height: 10), color: UIColor.darkGray, radius: 20, opacity: 5)
return sear
}()
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(searchbar)
}
override func viewLayoutMarginsDidChange() {
self.searchbar.frame = CGRect(x: 10, y: 20, width: self.view.frame.width - 20, height: 50)
}
答案 7 :(得分:0)
警卫让searchTextField = searchBar.value(forKey:“ searchField”)为? UITextField else {return} searchTextField.borderStyle = .none
如果要完全删除边框 斯威夫特5
答案 8 :(得分:0)
如果其他建议的选项对您不起作用,请尝试将searchTextField
属性用于最低部署目标iOS 13。
if #available(iOS 13.0, *) {
searchBar.searchTextField.backgroundColor = UIColor.clear
searchBar.searchTextField.borderStyle = .none
}