ฉันใช้ไฟล์UITextField
. ฉันต้องการเพิ่มความสูง แต่ไม่พบคุณสมบัติที่จะทำเช่นนี้ ฉันจะบรรลุเป้าหมายนี้ได้อย่างไร?
ฉันใช้ไฟล์UITextField
. ฉันต้องการเพิ่มความสูง แต่ไม่พบคุณสมบัติที่จะทำเช่นนี้ ฉันจะบรรลุเป้าหมายนี้ได้อย่างไร?
คำตอบ:
CGRect frameRect = textField.frame;
frameRect.size.height = 100; // <-- Specify the height you want here.
textField.frame = frameRect;
คุณไม่สามารถเปลี่ยนความสูงของรูปแบบเส้นขอบสี่เหลี่ยมผืนผ้าโค้งมนได้ ในการตั้งค่าความสูงเพียงเลือกรูปแบบเส้นขอบอื่น ๆ นอกเหนือจากเส้นขอบโค้งมนใน Xcode:
ในที่สุดฉันก็พบวิธีแก้ไขสำหรับสิ่งนี้!
ดังที่เราพบ IB ไม่อนุญาตให้เราเปลี่ยนความสูงของรูปแบบเส้นขอบมุมโค้งมน ดังนั้นให้เปลี่ยนเป็นสไตล์อื่นและตั้งค่าความสูงที่ต้องการ ในรหัสเปลี่ยนลักษณะเส้นขอบกลับ
textField.borderStyle = UITextBorderStyleRoundedRect;
viewWillLayoutSubviews
ตรวจสอบให้แน่ใจว่านี่คือภายในทำ ฉันเพิ่มรูปภาพลงในช่องleftView
ข้อความและข้อความบางส่วนและเมื่อเสร็จแล้วviewDidLoad
ทั้งคู่ก็ยืดออกอย่างแปลกประหลาด
textField.borderStyle = .RoundedRect
หากคุณใช้เค้าโครงอัตโนมัติคุณสามารถทำได้บนกระดานเรื่องราว
เพิ่มข้อ จำกัด ด้านความสูงลงในช่องข้อความจากนั้นเปลี่ยนค่าคงที่ข้อจำกัดความสูงเป็นค่าที่ต้องการ ขั้นตอนแสดงด้านล่าง:
ขั้นตอนที่ 1: สร้างข้อจำกัดความสูงสำหรับช่องข้อความ
ขั้นตอนที่ 2: เลือกข้อ จำกัด ความสูง
ขั้นตอนที่ 3: เปลี่ยนค่าคงที่ของ Height Constraint
borderStyle
เป็นอะไรก็ได้ยกเว้นปัดเศษ ใช้Editor -> Size to Fit Content
เพื่อให้เค้าโครงทำสิ่งนั้น ใช้เจ้าหน้าที่ตรวจสอบคุณสมบัติของคุณUITextField
เพื่อตรวจสอบความสูง ใช้สิ่งนี้เพื่อตั้งค่าข้อจำกัดความสูงของคุณและตอนนี้คุณสามารถเปลี่ยนborderStyle
ด้านหลังเป็นแบบโค้งมนได้
1. ) เปลี่ยนสไตล์เส้นขอบใน InterfaceBuilder
2. ) หลังจากนั้นคุณสามารถเปลี่ยนขนาดได้
3. ) สร้าง IBOutlet ไปยัง TextField ของคุณและป้อนรหัสต่อไปนี้ให้กับคุณviewDidLoad()
เพื่อเปลี่ยน BorderStyle กลับ
textField.borderStyle = UITextBorderStyleRoundedRect;
Swift 3:
textField.borderStyle = UITextBorderStyle.roundedRect
ในมุมมองของคุณ WillAppear กำหนดมุมเป็นรอบ
yourUITextField.borderStyle = UITextBorderStyleRoundedRect;
UItextField
ทำตามขั้นตอนที่สองง่ายๆเหล่านี้และได้รับการเพิ่มความสูงของคุณ
ขั้นตอนที่ 1:คลิกขวาที่ไฟล์ XIB และเปิดขึ้นใน "Source Code"
ขั้นตอนที่ 2:ค้นหาสิ่งเดียวกันUITextfield
แหล่งข้อมูลและตั้งค่าเฟรมตามที่คุณต้องการ
คุณสามารถใช้ขั้นตอนเหล่านี้เพื่อเปลี่ยนกรอบของตัวควบคุมแอปเปิ้ล
การอัปเดตสำหรับ iOS 6: ใช้การจัดวางอัตโนมัติแม้ว่าคุณจะยังไม่สามารถตั้งค่าความสูงของ UITextField จากตัวตรวจสอบขนาดในตัวสร้างอินเทอร์เฟซได้ (อย่างน้อย Xcode 4.5 DP4) ตอนนี้คุณสามารถตั้งค่าข้อ จำกัด ด้านความสูงได้แล้ว ซึ่งคุณสามารถแก้ไขได้จากตัวสร้างอินเทอร์เฟซ
นอกจากนี้หากคุณตั้งค่าความสูงของเฟรมตามรหัสการจัดวางอัตโนมัติอาจรีเซ็ตได้ขึ้นอยู่กับข้อ จำกัด อื่น ๆ ที่คุณอาจมี
ฉันรู้ว่านี่เป็นคำถามเก่า แต่ฉันแค่อยากจะเพิ่มว่าคุณต้องการเปลี่ยนความสูงของ UITextField จากภายใน IB ได้ง่ายๆเพียงแค่เปลี่ยนประเภทเส้นขอบของ UITextfield เป็นอะไรก็ได้ที่ไม่ใช่ประเภทมุมมนเริ่มต้น จากนั้นคุณสามารถยืดหรือเปลี่ยนแอตทริบิวต์ความสูงได้อย่างง่ายดายจากภายในตัวแก้ไข
@IBDesignable
class BigTextField: UITextField {
override func didMoveToWindow() {
super.didMoveToWindow()
if window != nil {
borderStyle = .roundedRect
}
}
}
UITextField
ด้วยBigTextField
.Border Style
none
การมีส่วนร่วมที่น่าสมเพชของฉันกับปัญหาโง่ ๆ นี้ ใน IB ตั้งค่าสไตล์เป็นไม่มีเพื่อให้คุณสามารถตั้งค่าความสูงได้จากนั้นใน IB ตั้งค่าคลาสให้เป็นคลาสย่อยUITextField
ที่บังคับให้สไตล์เป็นสี่เหลี่ยมผืนผ้าโค้งมน
@interface JLTForcedRoundedRectTextField : UITextField
@end
@implementation JLTForcedRoundedRectTextField
- (void)awakeFromNib
{
self.borderStyle = UITextBorderStyleRoundedRect;
}
@end
มันทำให้ฉันไม่ต้องแฮ็คไฟล์ XIB หรือเขียนโค้ดสไตล์ลงในตัวควบคุมมุมมองของฉัน
ใน Swift 3 ให้ใช้:
yourTextField.frame.size.height = 30
ความสูงของ UITextField ไม่สามารถปรับได้ใน Attributes Inspector ก็ต่อเมื่อมีรูปแบบเส้นขอบมุมโค้งมนเริ่มต้น แต่จะเพิ่มข้อ จำกัด ด้านความสูง (รวมถึงข้อ จำกัด อื่น ๆ ที่จำเป็นเพื่อให้เป็นไปตามระบบการจัดวางอัตโนมัติ - โดยปกติเพียงแค่ใช้ Add Missing Constraints) และ การปรับข้อ จำกัด จะปรับความสูงของช่องข้อความ หากคุณไม่ต้องการข้อ จำกัด สามารถลบข้อ จำกัด ได้ (Clear Constraints) และช่องข้อความจะยังคงอยู่ที่ความสูงที่ปรับไว้
ใช้งานได้เหมือนมีเสน่ห์
ลองดู
UITextField *field = [[UITextField alloc] initWithFrame:CGRectMake(20, 80, 280, 120)];
UITextField *txt = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
[txt setText:@"Ananth"];
[self.view addSubview:txt];
สองอาร์กิวเมนต์สุดท้ายคือความกว้างและความสูงคุณสามารถตั้งค่าได้ตามที่คุณต้องการ ...
คุณสามารถใช้คุณสมบัติเฟรมของฟิลด์ข้อความเพื่อเปลี่ยนเฟรม Like-Textfield.frame = CGRECTMake (แกน x, แกน y, ความกว้าง, ความสูง)
นี่ค่อนข้างง่าย
yourtextfield.frame = CGRectMake (yourXAxis, yourYAxis, yourWidth, yourHeight);
ประกาศฟิลด์ข้อความของคุณเป็นคุณสมบัติ gloabal และเปลี่ยนกรอบที่คุณต้องการทำในโค้ดของคุณ
Happy Coding!
หากคุณกำลังสร้างจำนวนมากUITextFields
สามารถทำได้เร็วกว่าใน subclass UITextView
s และแทนที่เมธอด setFrame ด้วย
-(void)setFrame:(CGRect)frame{
[self setBorderStyle:UITextBorderStyleRoundedRect];
[super setFrame:frame];
[self setBorderStyle:UITextBorderStyleNone];
}
ด้วยวิธีนี้คุณสามารถโทร
[customTextField setFrame:<rect>];
ฉันมีปัญหาเดียวกัน ลองใช้วิธีแก้ปัญหาบางอย่างที่นี่ แต่แทนที่จะทำทั้งหมดนี้ mumbo-jumbo ฉันพบว่าแค่ตั้งค่าความสูงก็เพียงพอแล้ว