UITextField सीमा रंग


133

मुझे UITextField बॉर्डर पर अपना रंग सेट करने की वास्तव में बहुत इच्छा है। लेकिन अभी तक मैं यह पता लगा सकता था कि केवल सीमा रेखा शैली को कैसे बदला जाए।

मैंने इस तरह से पृष्ठभूमि का रंग सेट करने के लिए पृष्ठभूमि संपत्ति का उपयोग किया है:

self.textField.backgroundColor = textFieldColor;

लेकिन मुझे UITextField बॉर्डर का रंग भी बदलना होगा। और मेरा सवाल यह था कि सीमा का रंग कैसे बदला जाए।


बहुत सारे उपयोगी जवाब लेकिन केवल एक ( stackoverflow.com/a/5387607/826946 ) में कुछ ऐसा पाया गया जिसकी मुझे कुंजी मिली: textField.borderStyle = UITextField.BorderStyle.none। इसके बिना मुझे अंतर्निहित सीमा के निशान मिलते हैं। एक बार जब आप अंतर्निहित सीमा का उपयोग नहीं करते हैं और अपने स्वयं को परिभाषित करना शुरू करते हैं, तो आपको यह कहने की आवश्यकता है कि आप इसे सीमा = = कोई नहीं का उपयोग करना चाहते हैं और फिर सभी मापदंडों (रंग, कोनेरेडियस और बॉर्डरविद) को परिभाषित करते हैं
एंडी

जवाबों:


274

QuartzCoreआप वर्ग में आयात रूपरेखा:

#import <QuartzCore/QuartzCore.h>

और सीमा रंग बदलने के लिए निम्न कोड स्निपेट का उपयोग करें (मैं इसे redColor पर सेट कर रहा हूं),

    textField.layer.cornerRadius=8.0f;
    textField.layer.masksToBounds=YES;
    textField.layer.borderColor=[[UIColor redColor]CGColor];
    textField.layer.borderWidth= 1.0f;

मूल लेआउट पर वापस लौटने के लिए बस बॉर्डर का रंग साफ़ करने के लिए सेट करें,

    serverField.layer.borderColor=[[UIColor clearColor]CGColor];

स्विफ्ट कोड में

    textField.layer.borderWidth = 1
    textField.layer.borderColor = UIColor.whiteColor().CGColor

3
यह QuartCore के बजाय #import <QuartzCore / QuartzCore.h> है (आप z भूल गए)
cldrr

54
IOS 7 में आपको बॉर्डर की चौड़ाई निर्धारित करनी चाहिए या रंग प्रभावी नहीं होता है।
मीका

1
एक शुरुआत के रूप में यह मेरे लिए कोई मतलब नहीं है। यदि मैं एक रिक्त, रिक्त एप्लिकेशन प्रारंभ करता हूं, तो स्टोरीबोर्ड पर जाएं और एक टेक्स्ट व्यू फ़ील्ड जोड़ें। मैं क्वार्ट्जकोर कहां से आयात करूं? मैं सीमा जानकारी ऊपर कहाँ जोड़ूँ? "TextField" क्या है और यह कैसे पता चलता है कि मैं किस पाठ क्षेत्र के बारे में बात कर रहा हूं?
नाथन मैककस्ले

1
@ सेफ़्थस यदि आपने अभी तक इसका पता नहीं लगाया है, तो आप यही करेंगे: आप स्टोरीबोर्ड में आपके द्वारा बनाए गए टेक्स्टफ़ील्ड को "हुक अप" करेंगे और इन गुणों को प्रोग्रामेटिक रूप से बदलेंगे । एक बार जब आप स्टोरीबोर्ड को हुक कर लेते हैं, तो आप अपने कोड (उदाहरण के लिए viewDidLoad) में जाते हैं और इन गुणों को यह कहकर बदल देते हैं कि self.myTextField.layer.cornerRadiusजैसे ही आप अपना ऐप लॉन्च करेंगे, वैसे ही ये बदलाव प्रभावी हो जाएंगे, लेकिन आप स्टोरीबोर्ड में परिवर्तन नहीं देख सकते। अगर इससे आपको कोई मतलब नहीं है, तो मेरा सुझाव है कि आप एक वेबसाइट पर जाएं, उदाहरण के लिए रे वेंडरलिच, और कुछ शुरुआती टट्स पढ़ें।
अलेक्जेंडर

@NathanMcKaskle "मैं क्वार्ट्जकोर कहां आयात करूं?" आप इसे अपने ViewController.h फ़ाइल के शीर्ष पर जोड़ते हैं। "टेक्स्ट टेक्स्ट क्या है" और यह कैसे पता चलता है कि मैं किस टेक्स्ट फील्ड के बारे में बात कर रहा हूं? आप एक 'स्थानीय' टेक्स्टफील्ड IBOutlet संस्करण बना सकते हैं और इसे TextField (TextView नहीं) से जोड़ सकते हैं जिसे आपने स्टोरीबोर्ड पर रखा है। अधिक जानकारी के लिए, यहां देखें: hubpages.com/technology/… "मैं ऊपर की सीमा जानकारी कहां जोड़ूं?" कहीं भी, लेकिन अधिमानतः, व्यूडलड फ़ंक्शन पर।
चेन ली योंग

21

इसे इस्तेमाल करे:

UITextField *theTextFiels=[[UITextField alloc]initWithFrame:CGRectMake(40, 40, 150, 30)];
    theTextFiels.borderStyle=UITextBorderStyleNone;
    theTextFiels.layer.cornerRadius=8.0f;
    theTextFiels.layer.masksToBounds=YES;
        theTextFiels.backgroundColor=[UIColor redColor];
    theTextFiels.layer.borderColor=[[UIColor blackColor]CGColor];
    theTextFiels.layer.borderWidth= 1.0f;

    [self.view addSubview:theTextFiels];
    [theTextFiels release];

और आयात क्वार्ट्जकोर:

#import <QuartzCore/QuartzCore.h>

17

निम्न वर्ग आयात करें:

#import <QuartzCore/QuartzCore.h> 

// टेक्स्ट फ़ील्ड की सीमा के लिए ग्रे रंग सेट करने के लिए कोड

[[textField layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0
                                                   green:171.0/255.0
                                                    blue:171.0/255.0
                                                   alpha:1.0] CGColor]];

171.0आवश्यकता के अनुसार संबंधित रंग संख्या के साथ बदलें ।


14

यह प्रश्न Google खोज पर बहुत अधिक दिखाता है और अधिकांश भाग के लिए काम करता है! मैंने पाया कि सलमान जैदी का जवाब आंशिक रूप से iOS 7 के लिए सही था।

आपको "reverting" कोड में संशोधन करना होगा। मैंने पाया कि पूरी तरह से काम करने के लिए निम्नलिखित काम किया:

textField.layer.cornerRadius = 0.0f;
textField.layer.masksToBounds = YES;
textField.layer.borderColor = [[UIColor blackColor] CGColor];
textField.layer.borderWidth = 0.0f;

मैं समझता हूं कि iOS 7 में बदलाव के कारण यह सबसे अधिक संभावना है।


10

स्वीकार किए जाते हैं जवाब से इस कार्रवाई को आसान बनाने के लिए, आप भी बना सकते हैं श्रेणी के लिए UIView(textfields के लिए न केवल UIView के सभी उपवर्गों, के लिए यह काम करता है के बाद से:

UIView + Additions.h:

#import <Foundation/Foundation.h>

@interface UIView (Additions)
- (void)setBorderForColor:(UIColor *)color 
                    width:(float)width 
                   radius:(float)radius;
@end

UIView + Additions.m:

#import "UIView+Additions.h"

@implementation UIView (Additions)

- (void)setBorderForColor:(UIColor *)color 
                    width:(float)width
                   radius:(float)radius
{
    self.layer.cornerRadius = radius;
    self.layer.masksToBounds = YES;
    self.layer.borderColor = [color CGColor];
    self.layer.borderWidth = width;
}

@end

उपयोग:

#import "UIView+Additions.h"
//...
[textField setBorderForColor:[UIColor redColor]
                       width:1.0f
                      radius:8.0f];

9

यदि आप गोल कोनों के साथ एक TextField का उपयोग करते हैं तो इस कोड का उपयोग करें:

    self.TextField.layer.cornerRadius=8.0f;
    self.TextField.layer.masksToBounds=YES;
    self.TextField.layer.borderColor=[[UIColor redColor]CGColor];
    self.TextField.layer.borderWidth= 1.0f;

सीमा हटाने के लिए:

self.TextField.layer.masksToBounds=NO;
self.TextField.layer.borderColor=[[UIColor clearColor]CGColor];


4

किसी भी दृश्य (या यूविवि सबक्लास) पर बॉर्डरकलर को स्टोरीबोर्ड का उपयोग करके थोड़ी सी कोडिंग के साथ सेट किया जा सकता है और यदि आप कई यूआई ऑब्जेक्ट्स पर बॉर्डर रंग सेट कर रहे हैं तो यह दृष्टिकोण वास्तव में आसान हो सकता है।

नीचे दिए गए चरण हैं कि इसे कैसे प्राप्त किया जाए,

  1. कैलेयर वर्ग पर एक श्रेणी बनाएँ। एक उपयुक्त नाम के साथ UIColor प्रकार की एक संपत्ति की घोषणा करें, मैं इसे बॉर्डर-बॉर्डर नाम दूंगा
  2. इस संपत्ति के लिए सेटर और गेट्टर लिखें।
  3. C सेटर ’विधि में परत की" सीमा "संपत्ति को नए रंगों CGColor मूल्य पर सेट करें।
  4. 'गेट्टर' पद्धति में परत के बॉर्डर के साथ UIColor लौटें।

पुनश्च: याद रखें, श्रेणियों में संग्रहीत गुण नहीं हो सकते। is बॉर्डर यूक्लोर ’को एक परिकलित संपत्ति के रूप में उपयोग किया जाता है, जो कि हम जिस पर ध्यान केंद्रित कर रहे हैं उसे प्राप्त करने के लिए एक संदर्भ के रूप में।

कृपया नीचे दिए गए कोड नमूने पर एक नज़र डालें;

उद्देश्य सी:

इंटरफ़ेस फ़ाइल:

#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>

@interface CALayer (BorderProperties)

// This assigns a CGColor to borderColor.
@property (nonatomic, assign) UIColor* borderUIColor;

@end

कार्यान्वयन फ़ाइल:

#import "CALayer+BorderProperties.h"

@implementation CALayer (BorderProperties)

- (void)setBorderUIColor:(UIColor *)color {
    self.borderColor = color.CGColor;
}

- (UIColor *)borderUIColor {
    return [UIColor colorWithCGColor:self.borderColor];
}

@end

स्विफ्ट 2.0:

extension CALayer {
var borderUIColor: UIColor {
    set {
        self.borderColor = newValue.CGColor
    }

    get {
        return UIColor(CGColor: self.borderColor!)
    }
}
}

और अंत में अपने स्टोरीबोर्ड / XIB पर जाएं, शेष चरणों का पालन करें;

  1. उस दृश्य ऑब्जेक्ट पर क्लिक करें जिसके लिए आप बॉर्डर कलर सेट करना चाहते हैं।
  2. "यूटिलिटी इंस्पेक्टर" (बाएं से तीसरा) "उपयोगिता" (स्क्रीन के दाईं ओर) पैनल पर क्लिक करें।
  3. "उपयोगकर्ता परिभाषित रनटाइम अटेंडेस" के तहत, "+" बटन पर क्लिक करके एक मुख्य पथ जोड़ें।
  4. "रंग" के लिए मुख्य पथ का प्रकार सेट करें।
  5. "Layer.borderUIColor" के रूप में मुख्य पथ के लिए मान दर्ज करें। [इस होना चाहिए याद रखें चर नाम , आप श्रेणी में घोषित नहीं BorderColor यहाँ यह borderUIColor ]।
  6. अंत में जो भी रंग आप चाहते हैं चुना।

सीमा रंग देखने के लिए आपको कम से कम 1 पर layer.borderWidth संपत्ति मान सेट करना है

बनाएँ और चलाएँ। हैप्पी कोडिंग। :)


कृपया कई प्रश्नों के समान उत्तर न दें। एक अच्छा उत्तर पोस्ट करें, फिर डुप्लिकेट के रूप में अन्य प्रश्नों को बंद करने के लिए वोट / ध्वज दें। यदि प्रश्न डुप्लिकेट नहीं है, तो प्रश्न के अपने उत्तरों को दर्जी करें
josliber

1

यहाँ एक स्विफ्ट कार्यान्वयन है। आप एक विस्तार कर सकते हैं ताकि यदि आप चाहें तो यह अन्य विचारों द्वारा उपयोग करने योग्य होगा।

extension UIView {
    func addBorderAndColor(color: UIColor, width: CGFloat, corner_radius: CGFloat = 0, clipsToBounds: Bool = false) {
        self.layer.borderWidth  = width
        self.layer.borderColor  = color.cgColor
        self.layer.cornerRadius = corner_radius
        self.clipsToBounds      = clipsToBounds
    }
}

की तरह इस पर कॉल करें: email.addBorderAndColor(color: UIColor.white, width: 0.5, corner_radius: 5, clipsToBounds: true)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.