UITextField ऊँचाई कैसे सेट करें?


130

मैं एक का उपयोग कर रहा हूँ UITextField। मैं इसकी ऊंचाई बढ़ाना चाहता हूं लेकिन मुझे ऐसा करने के लिए कोई संपत्ति नहीं मिली है। इसे कैसे प्राप्त किया जा सकता है?

जवाबों:


83
CGRect frameRect = textField.frame;
frameRect.size.height = 100; // <-- Specify the height you want here.
textField.frame = frameRect;

4
यह उर IBUITextField और परिवर्तन <स्ट्रिंग key = "NSFrame"> संपत्ति खोजने के स्रोत के रूप में खुला .xib करना अधिक आसान हो
HotJard

मैंने कोशिश की लेकिन यह मेरे लिए कुछ नहीं किया। आप उन पंक्तियों को कहाँ रखते हैं? मैंने इसे initWithNibName विधि में डाला।
जूनेक्स

इसे व्यूडिलडैड या ViewWillAppear / viewDidApper में होना चाहिए
मंजूनाथ

2
UITextField की डिफ़ॉल्ट ऊंचाई 31 है, किसी के लिए भी एक प्रोग्राम जोड़ने और एक डिफ़ॉल्ट ऊंचाई चाहते हैं
simon_smiley

2
@HotJard मैं स्टोरीबोर्ड स्रोत में हैकिंग के खिलाफ सिफारिश करेगा, यह कुछ मानों को रीसेट करने के लिए जाता है। उदाहरण के लिए, जब आप टेक्स्टफील्ड की ऊँचाई को इस तरह सेट करते हैं, और आप दृश्य में एक बटन जोड़ते हैं और बटन के पाठ के आकार को संपादित करते हैं, तो दृश्य में टेक्स्ट फ़ील्ड उनके डिफ़ॉल्ट ऊंचाई पर वापस आ जाएगी।
केविन

212

आप राउंडेड रेक्ट बॉर्डर स्टाइल की ऊंचाई नहीं बदल सकते। ऊंचाई सेट करने के लिए, बस Xcode में गोल बॉर्डर के अलावा किसी भी बॉर्डर स्टाइल को चुनें:

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


सिर्फ 10.0 (या किसी) के साथ संशोधित सेट कॉर्नररेडियस और आपको फिर से शैली के साथ UItextField मिला, लेकिन कस्टम ऊंचाई के साथ :)
बेटो

1
एक बेहतर तरीका सीमा है = UITextBorderStyleRoundedRect;
डैरेन

यह क्यों संभव नहीं है?
एपेक्स39

151

मैं अंत में इस के लिए तय पाया!

जैसा कि हमने पाया है, आईबी हमें गोल कोने की सीमा शैली की ऊंचाई को बदलने की अनुमति नहीं देता है। इसलिए इसे किसी भी अन्य शैली में बदलें और वांछित ऊंचाई निर्धारित करें। कोड में सीमा शैली वापस बदलें।

textField.borderStyle = UITextBorderStyleRoundedRect;

अच्छी चाल, लेकिन आप टेक्स्ट की बहु-पंक्ति प्रस्तुति को कैसे अनुमति दे सकते हैं?
लुसिएन

7
@ ल्यूसीएन - ऐसा नहीं होगा कि टेक्स्टफील्ड के बजाय एक टेक्स्टएरा हो
क्रेग

मुझे यह और भी अच्छा लगता है क्योंकि मैं अभी भी डिजाइनर का उपयोग कर सकता हूं।
रिडलरडेव

सुनिश्चित करें कि यह अंदर किया गया है viewWillLayoutSubviews। मैंने leftViewटेक्स्टफ़ील्ड और कुछ टेक्स्ट में एक छवि जोड़ी , और जब यह किया जाता है तो viewDidLoadवे दोनों अजीब तरह से फैलते हैं।

स्विफ्ट 3.0 उपयोग के लिएtextField.borderStyle = .RoundedRect
जियोर्ना

85

यदि आप Auto Layout का उपयोग कर रहे हैं तो आप Story Board पर कर सकते हैं।

टेक्स्ट फ़ील्ड में एक ऊँचाई की बाधा जोड़ें, फिर किसी भी वांछित मान के लिए ऊँचाई की बाधा को बदलें। कदम नीचे दिखाए गए हैं:

चरण 1: पाठ क्षेत्र के लिए एक ऊँचाई की बाधा बनाएँ

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

चरण 2: ऊंचाई की कमी का चयन करें

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

चरण 3: ऊँचाई की कमी के निरंतर मूल्य को बदलें

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


यह काम किया, लेकिन मुझे यह नई चेतावनी मिली, किसी भी विचार: स्थिति "राउंड स्टाइल टेक्स्ट फील्ड" के लिए अस्पष्ट है
एसकर्रॉथ

यदि यह कहता है कि स्थिति अस्पष्ट है, तो इसका मतलब है कि आपके पास UITextField ऑब्जेक्ट को स्थान देने के लिए बाधा नहीं हो सकती है। क्या आप x और y को परिभाषित करने के लिए एक बाधा जोड़ने का प्रयास कर सकते हैं। उदाहरण आप अग्रणी स्थान की बाधा (x के लिए) जोड़ सकते हैं और आप ऊपर से ऊर्ध्वाधर स्थान की बाधा जोड़ सकते हैं।
user1046037

stackoverflow.com/questions/21295136/… जब मैं ऐसा करता हूं कि मैंने एक प्रिंट स्क्रीन को जोड़ा
20

आपके द्वारा उपयोग किए जा रहे फ़ॉन्ट के लिए सही ऊंचाई की बाधा खोजने के लिए एक टिप: गोल को छोड़करborderStyle किसी भी चीज़ पर सेट करें । लेआउट का उपयोग अपनी चीज करने के लिए करें। इसकी ऊँचाई की जाँच करने के लिए अपने पर संपत्ति निरीक्षक का उपयोग करें । अपनी ऊँचाई की बाधा को स्थापित करने के लिए इसका उपयोग करें, और अब आप वापस गोल को बदल सकते हैं । Editor -> Size to Fit ContentUITextFieldborderStyle
बेंजो

क्या मैं इसे प्रोग्रामिक रूप से कर सकता हूं?
LKM

30

1.) इंटरफ़ेस स्टाइल में बॉर्डर स्टाइल बदलें।

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

2.) उसके बाद आप आकार बदलने में सक्षम हैं।

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

3.) अपने TextField में एक IBOutlet बनाएं और viewDidLoad()BorderStyle को वापस बदलने के लिए अपने कोड में निम्न कोड दर्ज करें ।

textField.borderStyle = UITextBorderStyleRoundedRect;

स्विफ्ट 3:

textField.borderStyle = UITextBorderStyle.roundedRect

धन्यवाद @ दाविद सीक
विनोथ विनो

29
  1. बॉर्डर स्टाइल चुनें जैसे गोल नहीं

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

  1. अपनी ऊंचाई निर्धारित करें

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

अपने दृश्य में गोल के रूप में कोने को सेट करें

yourUITextField.borderStyle = UITextBorderStyleRoundedRect;

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

  1. अपने दौर और लंबे UITextField का आनंद लें

महान!! इसने मेरी मदद की।
ऑगस्टीन पीए

1
यह बहुत अच्छा था, इसने स्विफ्ट 3/4 के लिए मदद की जिसका मुझे उपयोग करना था, ...... yourTextField.borderStyle = UITextBorderStyle.roundedRect
टोनी मेरिट

1
यह बदलकर UITextField.BorderStyle.roundedRect
smj

14

इन दो सरल चरणों का पालन करें और अपनी ऊंचाई बढ़ाएं UItextField

चरण 1: XIB फ़ाइल पर राइट क्लिक करें और इसे "सोर्स कोड" के रूप में खोलें।

चरण 2: एक ही UITextfieldस्रोत का पता लगाएं और जैसा चाहें फ्रेम सेट करें।

आप किसी भी सेब नियंत्रण के फ्रेम को बदलने के लिए इन चरणों का उपयोग कर सकते हैं।


1
मजेदार लेकिन यह सबसे अच्छा तरीका है :)
VisioN

4
यह सबसे अच्छा तरीका नहीं है जब आप अन्य प्रोग्रामर के बारे में सोचते हैं जहां ऊंचाई तय की गई है
बुचरलैंड

1
यह एक भयानक विचार की तरह लगता है। आपको XIB स्रोत को एक निजी एपीआई के रूप में समझना चाहिए। भविष्य के Xcode में यह आपके नीचे से बदल सकता है। उल्लेख करने के लिए नहीं कि आपने अपने अनुकूलन को अंतिम स्थान पर छिपा दिया है जो भविष्य में कोई भी समझदार व्यक्ति इसके लिए देखेगा।
माइकल पीटरसन

8

IOS 6 के लिए एक अपडेट: ऑटो-लेआउट का उपयोग करते हुए, भले ही आप इंटरफ़ेस बिल्डर में साइज इंस्पेक्टर से UITextField की ऊंचाई निर्धारित नहीं कर सकते हैं (जैसा कि Xcode 4.5 DP4 कम से कम), अब हाईट क्रैटिन सेट करना संभव है इसे, जिसे आप इंटरफ़ेस बिल्डर से संपादित कर सकते हैं।

इसके अलावा, यदि आप कोड द्वारा फ्रेम की ऊंचाई निर्धारित कर रहे हैं, तो ऑटो-लेआउट इसे आपके द्वारा किए गए अन्य अवरोधों के आधार पर रीसेट कर सकता है।


1
यह वही है जो मैं ढूंढ रहा हूं ... लेकिन मैं ऊंचाई-बाधा कैसे निर्धारित करूं ताकि यह यूआईटेक्फ़िल्ड की सामग्री के आधार पर गतिशील रूप से ऊंचाई का विस्तार कर रहा है?
१३:१२

func updateTextFields () {if #available (iOS 11, *) {} और {nameTextField.borderStyle = .line nameTextFieldHeight.constant = nameTextField .sizeThatFits (CGSize (चौड़ाई: 1000, ऊँचाई: 500))। ऊँचाई का नाम .extFieldField roundedRect}} मैं अपना राउंडऑर्डर textFields चाहता हूं कि मैं जिस एडेप्टिव फ़ॉन्ट को उन पर सेट कर रहा हूं, उसके आधार पर उनकी ऊंचाई को समायोजित कर सकूं। यह iOS 11 पर बॉक्स से बाहर काम करता है, लेकिन iOS 9,10 पर बिल्कुल भी काम नहीं करता है। मैं निम्नलिखित कोड का उपयोग करता हूं:
PhoneyDeveloper

6

मैं यह एक पुराना प्रश्न जानता हूं, लेकिन मैं सिर्फ यह जोड़ना चाहता हूं कि क्या आप आसानी से IB के अंदर से UITextField की ऊंचाई बदलना चाहते हैं, तो बस उस UITextfield की सीमा प्रकार को डिफ़ॉल्ट गोल कोने प्रकार के अलावा और कुछ भी बदल सकते हैं। फिर आप संपादक के अंदर से आसानी से ऊंचाई विशेषताओं को बढ़ा या बदल सकते हैं।


4

swift3

@IBDesignable
class BigTextField: UITextField {
    override func didMoveToWindow() {
        super.didMoveToWindow()
        if window != nil {
            borderStyle = .roundedRect
        }
    }
}

इंटरफ़ेस बिल्डर

  • बदलें UITextFieldके साथ BigTextField
  • बदले Border Style के लिए none

यह अब तक का सबसे अच्छा समाधान है।
ilovebigmacs

3

इस गूंगी समस्या के लिए मेरा दयनीय योगदान। IB में शैली को किसी से भी सेट न करें ताकि आप ऊँचाई सेट कर सकें, फिर IB में वर्ग को उप-वर्ग के रूप में सेट करने के UITextFieldलिए शैली को गोल आयताकार बनाने के लिए बाध्य करता है।

@interface JLTForcedRoundedRectTextField : UITextField
@end

@implementation JLTForcedRoundedRectTextField
- (void)awakeFromNib
{
    self.borderStyle = UITextBorderStyleRoundedRect;
}
@end

इसने मुझे मेरे दृश्य नियंत्रक में XIB फ़ाइल या लेखन शैली कोड को हैक करने से रोक दिया।



2

एक UITextField की ऊंचाई केवल Attributes Inspector में समायोज्य नहीं है, जब इसमें डिफ़ॉल्ट गोल कोनों बॉर्डर स्टाइल है, लेकिन एक ऊँचाई की बाधा (प्लस किसी भी अन्य बाधाओं को जोड़कर जो ऑटोलॉयट सिस्टम को संतुष्ट करने के लिए आवश्यक हैं - अक्सर इसे केवल Missing Constraints का उपयोग करके) और बाधा को समायोजित करने से टेक्स्टफील्ड की ऊंचाई समायोजित हो जाएगी। यदि आप बाधाओं को नहीं चाहते हैं, तो बाधाओं को हटाया जा सकता है (बाधाएं हटाएं) और टेक्स्टफील्ड समायोजित ऊंचाई पर रहेगा।

एक जादू की तरह काम करता है।



1
UITextField *txt = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
    [txt setText:@"Ananth"];
    [self.view addSubview:txt];

अंतिम दो तर्क चौड़ाई और ऊंचाई हैं, आप अपनी इच्छानुसार सेट कर सकते हैं ...


1

आप टेक्स्ट फ़ील्ड की फ़्रेम प्रॉपर्टी का उपयोग फ़्रेम बदलने के लिए कर सकते हैं। Textfield.frame = CGRECTMake (x अक्ष, y अक्ष, चौड़ाई, ऊँचाई)


1

यह काफी सरल है।

yourtextfield.frame = CGRectMake (yourXAxis, yourYAxis, yourWidth, yourHeight);

अपने टेक्स्टफ़ील्ड को एक ग्लोबल प्रॉपर्टी के रूप में घोषित करें और जहाँ भी आप इसे अपने कोड में करना चाहते हैं, उसका फ्रेम बदलें।

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


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

1

यदि आप बहुत कुछ बना रहे हैं, तो UITextFieldsयह उप-वर्ग UITextViewएस को ओवरक्लियर कर सकता है और सेटफ्रेम विधि को ओवरराइड कर सकता है

-(void)setFrame:(CGRect)frame{
    [self setBorderStyle:UITextBorderStyleRoundedRect];
    [super setFrame:frame];
    [self setBorderStyle:UITextBorderStyleNone];
}  

इस तरह से आप सिर्फ कॉल कर सकते हैं
[customTextField setFrame:<rect>];


0

मैं एक ही मुद्दा रहा था। यहां कुछ समाधानों की कोशिश की गई, लेकिन यह सब मंबो-जंबो करने के बजाय। मैंने पाया कि सिर्फ ऊंचाई तय करना ही काफी है।

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