์๋ ํ์ธ์! Foma์ ๋๋ค!
์ด๋ฒ์๋ ์์น๋ฐ์ ๋ํด์ ๋ค๋ค๋ณผ๊ฑด๋ฐ์.
๊ฐ๋ ์์น๋ฐ์ ๋ฐฐ๊ฒฝ์์ด๋ ๋๋ณด๊ธฐ์ด๋ฏธ์ง ๋ฑ์ ๋ฐ๊พธ๊ณ ์ถ์ ๋๊ฐ ์์์ต๋๋ค.
๊ทธ๋์ ์ด์ฌํ ๊ตฌ๊ธ๋งํด๋ณธ ๊ฒฐ๊ณผ
1.์์น๋ฐ์ ํ๋ ์ด์คํ๋(๊ฒ์ํ๊ธฐ ์ ์ ํ์๊ธ์จ๋ก ๋ ์๋๊ฒ) ์ธํ
2.์์น๋ฐ์ ์ผ์ชฝ ๋๋ณด๊ธฐ ์์ด์ฝ ์ด๋ฏธ์ง ์ธํ
3.์์น๋ฐ์ ์ค๋ฅธ์ชฝ ์์ค๋ฒํผ ์ด๋ฏธ์ง ์ธํ (๊ฒ์ํ์ ๋)
4.์์น๋ฐ๋ฅผ ๋ค๋น๊ฒ์ด์ ๋ฐ์ ๋ฃ๋๋ฒ
5.์์น๋ฐ์ ๋ฐฐ๊ฒฝํ๋ฉด,๊ธ์จ์,ํ๋ ์ด์คํ๋์ ์ธํ
6.์์น๋ฐ ์ผ์ชฝ,์ค๋ฅธ์ชฝ ์ด๋ฏธ์ง ๋ฃ๊ธฐ ํดํธ์ ์ธํ
์ด๋ ๊ฒ ์ปค์คํ ํ๋ ๋ฒ์ ์ ์ ์์์ต๋๋ค.
๋จผ์ ๊ฐ์ฅ ๋จผ์ ํด์ฃผ์ด์ผํ ๊ฒ์ searchbar๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ ๋๋ค. = > let searchBar = UISearchBar()
1.ํ๋ ์ด์คํ๋ ์ค์ ๋ฒ์ searchBar์ .placeholder๋ฅผ ํด์ฃผ์๊ณ ์ํ๋ ๋ฌธ๊ตฌ๋ฅผ ์จ์ฃผ์๋ฉด ๋ฉ๋๋ค. => searchBar.placeholder = "Search"(์ํ๋ ๋ฌธ๊ตฌ)
2.์์น๋ฐ์ ์ผ์ชฝ ๋๋ณด๊ธฐ ์์ด์ฝ ์ด๋ฏธ์ง ์ธํ ์ .setImage๋ฅผ ํด์ฃผ์๊ณ ์ฐจ๋ก๋๋ก ์ํ๋ ์ด๋ฏธ์ง์ for:UISearchBar.Icon.search(์์น์์ด์ฝ),state๋ .normal๋ก ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
=> searchBar.setImage(UIImage(named: "icSearchNonW"), for: UISearchBar.Icon.search, state: .normal)
3.์์น๋ฐ์ ์ค๋ฅธ์ชฝ ์์ค๋ฒํผ ์ด๋ฏธ์ง ์ธํ (๊ฒ์ํ์ ๋) 2์ ๋ง์ฐฌ์ง์ด์ง๋ง for์๋ .clear(๊ฒ์ํ ๋ฌธ์ฅ์ ์์จ๋ ์์ด์ฝ)๋ก๋ง ๋ฐ๊ฟ์ฃผ์๋ฉด ๋ฉ๋๋ค.
=> searchBar.setImage(UIImage(named: "icCancel"), for: .clear, state: .normal)
4. ์์น๋ฐ๋ฅผ ๋ค๋น๊ฒ์ด์ ๋ฐ์ ๋ฃ๋๋ฒ์ ์ฃผ์ํ์ค์ ์ ๋ค๋น๊ฒ์ด์ ์ฝํธ๋กค๋ฌ๊ฐ ์์ ๋ทฐ์ปจํธ๋กค๋ฌ๋ก ์กด์ฌํด์ผํฉ๋๋ค.
๋ง์ฝ ์กด์ฌํ๋ค๋ฉด navigationBar์ topItem์ titleView๋ฅผ searchBar๋ก ์ค์ ํด์ฃผ์๋ฉด๋ฉ๋๋ค.
=> self.navigationController?.navigationBar.topItem?.titleView = searchBar
5.์์น๋ฐ์ ๋ฐฐ๊ฒฝํ๋ฉด,๊ธ์จ์,ํ๋ ์ด์คํ๋์ ์ธํ ์
๊ฐ์ฅ ๋จผ์
=> if let textfield = searchBar.value(forKey: "searchField") as? UITextField { ...} ๋ก ์์น๋ฐ์ ์์นํ๋ ๊ฐ์ ๊ฐ์ง textfield๋ฅผ ๋ง๋ค์ด์ฃผ์๊ณ ๋ฐฐ๊ฒฝํ๋ฉด๊ณผ ๊ธ์จ์์ ๊ฐ๋จํ๊ฒ .backgroundColor์ .textColor๋ก ์ค์ ํด์ค๋๋ค.
ํ๋ ์ด์คํ๋๋ ๋ฐ๋ก NSAttributedString์ผ๋ก attributes ์์ [NSAttributedString.Key.foregroundColor : ์ํ๋์]์ ๋ฃ์ด์ฃผ์๋ฉด ๋ฉ๋๋ค.
=> textfield.backgroundColor = UIColor.black (๋ฐฐ๊ฒฝํ๋ฉด)
textfield.attributedPlaceholder= NSAttributedString(string: textfield.placeholder ?? "", attributes: [NSAttributedString.Key.foregroundColor : UIColor.lightGray]) (ํ๋ ์ด์คํ๋)
textfield.textColor = UIColor.white(๊ธ์จ์)
6.์์น๋ฐ์ ์ผ์ชฝ ์ค๋ฅธ์ชฝ ์ด๋ฏธ์ง ๋ฃ๊ธฐ ๋ฐ ํดํธ์ค์ ์ ๋จผ์ ํ ์คํธํ๋์ ์ผ์ชฝ๋ทฐ(leftView)๋ฅผ ์ด๋ฏธ์ง๋ทฐ๋ก ๋ง๋ค์ด์ฃผ์๊ณ
leftView์ ์ด๋ฏธ์ง๋ฅผ image.witheRenderingMode(.alwaysTemplate)๋ก ์ค์ ํด์ค๋๋ค.
๊ทธ ๋ค์ ํดํธ ์ค์ ์ .tintColor = ์ํ๋ ์์ผ๋ก ํด์ค๋๋ค.
์ค๋ฅธ์ชฝ์(rightView)๋ก ํด์ฃผ์๊ณ ๋ง์ฐฌ๊ฐ์ง๋ก ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
=> if let leftView = textfield.leftView as? UIImageView {
leftView.image = leftView.image?.withRenderingMode(.alwaysTemplate)
leftView.tintColor = UIColor.white
}
=> if let rightView = textfield.rightView as? UIImageView {
rightView.image = rightView.image?.withRenderingMode(.alwaysTemplate)
rightView.tintColor = UIColor.white
}
์ด๋ ๊ฒ ๋ชจ๋ ์ค์ ํด์ฃผ์๋ฉด ์๋์ ๊ฐ์ด ์์ ๋ง์ ์ปค์คํ ๋ ์์น๋ฐ๋ฅผ ๋ณผ ์ ์์ต๋๋ค!!!!
์ ์ฒด์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
setSearchBar()
}
//์์น๋ฐ ์ธํ
func setSearchBar(){
//์์น๋ฐ ๋ง๋ค๊ธฐ
let searchBar = UISearchBar()
searchBar.placeholder = "Search"
//์ผ์ชฝ ์์น์์ด์ฝ ์ด๋ฏธ์ง ์ธํ
ํ๊ธฐ
searchBar.setImage(UIImage(named: "icSearchNonW"), for: UISearchBar.Icon.search, state: .normal)
//์ค๋ฅธ์ชฝ x๋ฒํผ ์ด๋ฏธ์ง ์ธํ
ํ๊ธฐ
searchBar.setImage(UIImage(named: "icCancel"), for: .clear, state: .normal)
//๋ค๋น๊ฒ์ด์
์ ์์น๋ฐ ๋ฃ๊ธฐ
self.navigationController?.navigationBar.topItem?.titleView = searchBar
if let textfield = searchBar.value(forKey: "searchField") as? UITextField {
//์์น๋ฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ปฌ๋ฌ
textfield.backgroundColor = UIColor.black
//ํ๋ ์ด์คํ๋ ๊ธ์จ ์ ์ ํ๊ธฐ
textfield.attributedPlaceholder = NSAttributedString(string: textfield.placeholder ?? "", attributes: [NSAttributedString.Key.foregroundColor : UIColor.lightGray])
//์์น๋ฐ ํ
์คํธ์
๋ ฅ์ ์ ์ ํ๊ธฐ
textfield.textColor = UIColor.white
//์ผ์ชฝ ์์ด์ฝ ์ด๋ฏธ์ง๋ฃ๊ธฐ
if let leftView = textfield.leftView as? UIImageView {
leftView.image = leftView.image?.withRenderingMode(.alwaysTemplate)
//์ด๋ฏธ์ง ํดํธ์ปฌ๋ฌ ์ ํ๊ธฐ
leftView.tintColor = UIColor.white
}
//์ค๋ฅธ์ชฝ x๋ฒํผ ์ด๋ฏธ์ง๋ฃ๊ธฐ
if let rightView = textfield.rightView as? UIImageView {
rightView.image = rightView.image?.withRenderingMode(.alwaysTemplate)
//์ด๋ฏธ์ง ํดํธ ์ ํ๊ธฐ
rightView.tintColor = UIColor.white
}
}
}
}
|
cs |
๋๊ธ