Ответ 1
Установите бар backgroundImage
в пустой UIImage
, а не nil
:
searchBar.backgroundImage = UIImage()
Вы также можете установить barTintColor
, как указано в комментарии ниже.
Я создал.xib с UISearchBar.
Я хочу удалить верхнюю и нижнюю границы, как показано на этом изображении:
Существует также то, что выглядит как тень под верхней границей.
Я попытался изменить фон/цвет оттенков и т.д., Но изо всех сил пытался заставить его исчезнуть.
Любая помощь будет приветствоваться, любые идеи?
РЕДАКТИРОВАТЬ
Поэтому приведенный ниже код позволяет мне избавиться от границы сверху и снизу, но не странную тень. Я добавил зеленый фон, чтобы показать его более четко.
Кроме того, что было бы лучшим способом добавить границу вокруг текстового поля (а не представления)? Спасибо
//** Это то, что я пытаюсь сделать: https://stackoverflow.com/info/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() {
}
}
Установите бар backgroundImage
в пустой UIImage
, а не nil
:
searchBar.backgroundImage = UIImage()
Вы также можете установить barTintColor
, как указано в комментарии ниже.
Я пробовал все ответы, но они не удалили внутреннюю тень 1px UISearchBar UITextfield внутри.
Я решил эту проблему, увеличив ширину полосы белого. Он перекрывает тень.
searchBar.layer.borderWidth = 10
searchBar.layer.borderColor = UIColor.white.cgColor
Попробуй это:
searchBar.layer.borderWidth = 1
searchBar.layer.borderColor = UIColor.whiteColor().CGColor
РЕДАКТИРОВАТЬ:
Я считаю, что тень вызвана внутренним UITextField
. Попробуйте использовать код ниже:
var textField : UITextField
for subview in searchBar.subviews {
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()
}
}
Там другой трюк:
Для нижней границы вы можете покрыть его нижним видом (например: tableView) с помощью -1 пикселей.
Для верхней границы, переместите его вверх на 1 пиксель к навигационной панели, также исправьте это.