2014-10-18 6 views
12

में खोज बार प्लेसहोल्डर टेक्स्ट फ़ॉन्ट बदलना मैं अपने खोज प्रदर्शन नियंत्रक के भीतर खोज बार में प्लेसहोल्डर टेक्स्ट का फ़ॉन्ट बदलने की कोशिश कर रहा हूं। मैं कुछ उदाहरण देख रहा था और मैंने उन्हें लागू करने की कोशिश की लेकिन जैसा कि वे उद्देश्य-सी में हैं, मैं किसी भी काम को पाने में सक्षम नहीं था जिसे मैं काम कर सकता था।स्विफ्ट

उदाहरण के लिए, मैं इस एक कोशिश की:

UITextField *textField = [[searchBar subviews] objectAtIndex:1]; 
[textField setFont:[UIFont fontWithName:@"Helvetica" size:40]]; 

लेकिन मैं अतीत var textField: UITextField = UISearchBar

कोई भी विचार प्राप्त करने में असमर्थ था?

उत्तर

5

आईओएस 8 में, कोशिश इस

for subView in searchBar.subviews { 
    for subsubView in subView.subviews { 
     if let textField = subsubView as? UITextField { 
     textField.attributedPlaceholder = NSAttributedString(string:NSLocalizedString("Search", comment:""), 
      attributes:[NSForegroundColorAttributeName: UIColor.orangeColor()]) 
     } 
    } 
} 
3

यह iOS7 के लिए पूरी तरह से काम करता है - तेजी से 2 का उपयोग ios9>:

if #available(iOS 9.0, *) { 
    UITextField.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).font = UI.getInstance.tinyFont 
} else { 
    func checkSubview(view:UIView) 
    for subView in view.subviews { 
     if subView is UITextField { 
      let textField = subView as! UITextField 
      textField.font = UI.getInstance.tinyFont 
     } else { 
      checkSubview(subView) 
     } 

    } 
    checkSubview(view) 
} 

बस जो भी फ़ॉन्ट आप चाहते द्वारा UI.getInstance.tinyFont बदलें।

24
//SearchBar Text 
    let textFieldInsideUISearchBar = dashBoardSearchBar.valueForKey("searchField") as? UITextField 
textFieldInsideUISearchBar?.textColor = UIColor.whiteColor() 

//SearchBar Placeholder  
    let textFieldInsideUISearchBarLabel = textFieldInsideUISearchBar!.valueForKey("placeholderLabel") as? UILabel 
textFieldInsideUISearchBarLabel?.textColor = UIColor.whiteColor() 
+0

"placeholderLabel" ऐसा लगता है कि अब (आईओएस 10) काम नहीं कर रहा है, लेकिन "सर्चफिल्ड" के फ़ॉन्ट को बदलना, प्लेसहोल्डर फ़ॉन्ट और टेक्स्ट फ़ॉन्ट के साथ-साथ – Daniel

7

यह खोजबार के टेक्स्टफील्ड में फ़ॉन्ट या किसी अन्य समान परिवर्तन को बदलने के लिए सबसे आसान अभ्यास है। मैं एक्सकोड 8.4, स्विफ्ट 3.x, आईओएस 10.x का उपयोग कर रहा हूं।

extension UISearchBar { 

func change(textFont : UIFont?) { 

    for view : UIView in (self.subviews[0]).subviews { 

     if let textField = view as? UITextField { 
      textField.font = textFont 
     } 
    } 
} } 

ऊपर कोड सीधे कहा जा सकता है, जहां आप Searchbar का एक IBOutlet बनाने ...

@IBOutlet weak var searchBar: UISearchBar! { 
    didSet { 
     searchBar.change(textFont: GlobalConstants.Font.avenirBook14) 
    } 
} 
0

स्विफ्ट 3 के संस्करण @ एल्विन के जवाब

let textFieldInsideUISearchBar = searchBar.value(forKey: "searchField") as? UITextField 
    let placeholderLabel  = textFieldInsideUISearchBar?.value(forKey: "placeholderLabel") as? UILabel 
    placeholderLabel?.font  = UIFont.systemFont(ofSize: 12.0) 
+0

बस अगर आप इस काम को करने के लिए संघर्ष कर रहे हैं, तो यदि आप स्टोरीबोर्ड का उपयोग कर रहे हैं, तो आपको इस कोड का उपयोग करने से पहले स्टोरीबोर्ड की खोज बार पर प्लेसहोल्डर वैल्यू सेट करने की आवश्यकता है – Leonardo