बॉर्डर UITextView


127

मैं एक पतली ग्रे बॉर्डर चाहता हूं UITextView। मैं Apple प्रलेखन के माध्यम से चला गया है, लेकिन वहाँ कोई संपत्ति नहीं मिली। कृपया मदद कीजिए।

जवाबों:


306
#import <QuartzCore/QuartzCore.h>

....

// typically inside of the -(void) viewDidLoad method
self.yourUITextView.layer.borderWidth = 5.0f;
self.yourUITextView.layer.borderColor = [[UIColor grayColor] CGColor];

62
मुझे नहीं लगा कि यह वास्तव में बहुत समझाने की जरूरत है, दृश्य UITextView है, और कोड जहां भी आप दृश्य सेट करेंगे (awakeFromNib या viewDidLoad दो संभावित स्थान हैं) जाता है। चूंकि कोई कोड नहीं दिया गया था इसलिए प्रतिक्रिया में अच्छा संदर्भ देने का कोई तरीका नहीं है।
केंडल हेल्मेस् ट्टर गेलनर

XCode ने मुझे परत के लिए सीमा निर्धारित करने की अनुमति नहीं दी। यह कहता है कि परत केवल पढ़ने के लिए है। मैंने यूइवीवाई (जहां कुछ तत्व डाल दिए) और उस दृश्य को सीमा निर्धारित करने की कोशिश की। ऐसा करने की कोशिश कर रहा है self.myView.layer.borderWidth ..., लेकिन जैसा कि मैंने कहा, परत केवल पढ़ने के लिए है, इसलिए परत को सेट करने के लिए कोई विधि या चर नहीं है
Paulius Vindzigelskis

2
क्या आपने क्वार्ट्जकोर आयात किया था? तुम भी self.myView से एक कायर को बाहर निकालने की कोशिश कर सकते हैं और उस पर सीमा को स्थापित कर सकते हैं। यह सेटल है।
केंडल हेल्मसटेटर गेलनर

"लेयर" के बारे में कुछ और जानकारी केवल यूआईईवाईईवाई में पढ़ी जा रही है (लेयर प्रॉपर्टी है, लेकिन आप एक दृश्य के लिए लेयर में मान सेट कर सकते हैं): stackoverflow.com/questions/12837077/…
केंडल हेल्मिसेटर प्लेटनर

42

गोल कोनों के लिए निम्नलिखित जोड़ें:

self.yourUITextview.layer.cornerRadius = 8; 

23

यहाँ मेरे द्वारा उपयोग किया जाने वाला कोड है, TextView"tbComments" नामक मेरे नियंत्रण के चारों ओर एक सीमा जोड़ने के लिए :

self.tbComments.layer.borderColor = [[UIColor grayColor] CGColor];
self.tbComments.layer.borderWidth = 1.0;
self.tbComments.layer.cornerRadius = 8;

और यहाँ यह कैसा दिखता है:

यहाँ छवि विवरण दर्ज करें

बहुत आसान।


19

मैं के UIImageViewएक उप के रूप में जोड़ें UITextView। यह देशी बॉर्डर से मेल खाता है UITextField, जिसमें ऊपर से नीचे तक ढाल शामिल है:

यहाँ छवि विवरण दर्ज करें

textView.backgroundColor = [UIColor clearColor];
UIImageView *borderView = [[UIImageView alloc] initWithFrame: CGRectMake(0, 0, textView.frame.size.width, textView.frame.size.height)];
borderView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
UIImage *textFieldImage = [[UIImage imageNamed:@"TextField.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(15, 8, 15, 8)];
borderView.image = textFieldImage;
[textField addSubview: borderView];
[textField sendSubviewToBack: borderView];

ये मेरे द्वारा उपयोग की जाने वाली png छवियां हैं, और एक jpg प्रतिनिधित्व है:

@ 1x

@ 2x

यहाँ छवि विवरण दर्ज करें


अच्छा समाधान। क्या ये चित्र आपके हैं? क्या हम उनका उपयोग करने के लिए स्वतंत्र हैं?
जेम्स वेबस्टर

ये चित्र Apple के स्वयं के ऐप्स में उपयोग किए गए लोगों पर 'मॉडलिंग' किए गए हैं। सच में मैंने उन्हें निकाला और बहुत कम, यदि कोई है, तो बदल दिया। अपने जोखिम पार इस्तेमाल करें। लक्ष्य देशी लग रहा है और महसूस नकल करना था तो यह कुछ अलग है कि बहुत अलग लग रहा है के साथ आने के लिए मुश्किल है। इसके लायक क्या है, मैंने बिना किसी समस्या के इस छवि का उपयोग करके ऐप्स को भेज दिया है और अनुमोदित कर दिया है।
बेन पैकर्ड

Png छवि फ़ाइलों को हटा दिया गया है - मुझे लगता है कि अगर jpg आपके लिए काम नहीं करता है, तो एक नई छवि स्थान के साथ लगातार इसे अपडेट करने का इरादा नहीं है। मैं टिप्पणी के माध्यम से अनुरोध के रूप में फिर से अपलोड कर सकता हूं।
बेन पैकर्ड

3
छवि के साथ यह सबसे अच्छा काम करता है: coderesizableImageWithCapInsets: UIEdgeInsetsMake (28, 14, 28, 14)
RefuX

WikiUpload लिंक (दो छवियों के लिए) अब छवि फ़ाइलों को खोजने में विफल रहता है। ;(
माइक

18

महान काम करता है, लेकिन रंग एक होना चाहिए CGColor, नहीं UIColor:

view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];

4
#import <QuartzCore / QuartzCore.h>
kolinko

6

मेरा मानना ​​है कि उपरोक्त उत्तर स्विफ्ट के पिछले संस्करणों के लिए हैं। मैंने स्विफ्ट 4 के लिए थोड़ा सा और नीचे दिया गया कोड काम किया है। इसे जो भी चाहे लाभ के लिए साझा कर सकता है।

self.textViewName.layer.borderColor = UIColor.lightGray.cgColor
self.textViewName.layer.borderWidth = 1.0
self.textViewName.layer.cornerRadius = 8

हैप्पी कोडिंग!


: Swift5 और अंधेरे मोड के साथ आप भी प्रणाली रंगों का उपयोग कर सकते हैंself.textViewName.layer.borderColor = UIColor.systemGray4.cgColor
multitudes

4

स्विफ्ट प्रोग्रामिंग के लिए, इसका उपयोग करें

tv_comment.layer.borderWidth = 2
tv_comment.layer.borderColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1).CGColor

या सिर्फUIColor(white: 0.2, alpha: 1).CGColor
सिंह

3

यह एक मूल UITextField से जितना करीब हो सकता है

func updateBodyTextViewUI() {
    let borderColor = UIColor.init(red: 212/255, green: 212/255, blue: 212/255, alpha: 0.5)

    self.bodyTextView.layer.borderColor = borderColor.CGColor
    self.bodyTextView.layer.borderWidth = 0.8
    self.bodyTextView.layer.cornerRadius = 5
}

1

आप स्टोरीबोर्ड - पहचान निरीक्षक - उपयोगकर्ता परिभाषित रनटाइम विशेषता से UITextView में सीमा जोड़ सकते हैं

यहाँ छवि विवरण दर्ज करें


0

IOS 8 और Xcode 6 के रूप में, मुझे अब सबसे अच्छा समाधान UITextView को उप-वर्ग में लाना है और उप-वर्ग को IB_DESIGNABLE के रूप में चिह्नित करना है, जो आपको स्टोरीबोर्ड में सीमा को देखने की अनुमति देगा।

हैडर:

#import <UIKit/UIKit.h>

IB_DESIGNABLE

@interface BorderTextView : UITextView

@end

कार्यान्वयन:

#import "BorderTextView.h"

@implementation BorderTextView

- (void)drawRect:(CGRect)rect
{
    self.layer.borderWidth = 1.0;
    self.layer.borderColor = [UIColor blackColor].CGColor;
    self.layer.cornerRadius = 5.0f;
}

@end

इसके बाद बस स्टोरीबोर्ड में अपना UITextView खींचें और BorderTextView में अपनी कक्षा निर्धारित करें


0

जिस चीज़ ने इसे काम किया है (यहाँ उत्तरों का पालन करने के अलावा) वह borderStyleविशेषता जोड़ रहा है:

#import <QuartzCore/QuartzCore.h>
..

phoneTextField.layer.borderWidth = 1.0f;
phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor];
phoneTextField.borderStyle = UITextBorderStyleNone;

0

बस एक छोटा सा जोड़। यदि आप सीमा को थोड़ा चौड़ा करते हैं, तो यह पाठ के बाईं और दाईं ओर हस्तक्षेप करेगी। उससे बचने के लिए, मैंने निम्नलिखित पंक्ति जोड़ी:

self.someTextView.textContainerInset = UIEdgeInsetsMake(8.0, 8.0, 8.0, 8.0);

0

स्विफ्ट 3 में, आप निम्नलिखित दो लाइनों का उपयोग कर सकते हैं:

myText.layer.borderColor = UIColor.lightGray.cgColor

myText.layer.borderWidth = 1.0

-3

मैंने इस समस्या को स्टोरीबोर्ड में पूरी तरह से अक्षम UIButtonकरके UITextViewऔर UITextViewस्पष्ट रंग की पृष्ठभूमि का रंग डालकर हल किया। यह अतिरिक्त कोड या पैकेज की आवश्यकता के बिना काम करता है।


3
बेशक, यह iOS 7 में काम नहीं करता है, क्योंकि बटन का कोई किनारा नहीं है (बटन अब लेबल की तरह दिखते हैं)
माइक Gledhill
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.