Jawaban:
CGRect frameRect = textField.frame;
frameRect.size.height = 100; // <-- Specify the height you want here.
textField.frame = frameRect;
Anda tidak dapat mengubah ketinggian gaya batas persegi panjang bulat. Untuk mengatur ketinggian, cukup pilih gaya perbatasan selain perbatasan bulat di Xcode:
Saya akhirnya menemukan perbaikan untuk ini!
Seperti yang telah kita temukan, IB tidak memungkinkan kita untuk mengubah ketinggian gaya perbatasan sudut bulat. Jadi ubah ke gaya lain dan atur ketinggian yang diinginkan. Dalam kode, ubah kembali gaya perbatasan.
textField.borderStyle = UITextBorderStyleRoundedRect;
viewWillLayoutSubviews
. Saya menambahkan gambar ke bidang leftView
teks dan beberapa teks, dan ketika ini dilakukan di viewDidLoad
keduanya membentang aneh.
textField.borderStyle = .RoundedRect
Jika Anda menggunakan Tata Letak Otomatis maka Anda bisa melakukannya di papan Cerita.
Tambahkan batasan ketinggian ke bidang teks, lalu ubah konstanta batasan tinggi ke nilai yang diinginkan. Langkah-langkahnya ditunjukkan di bawah ini:
Langkah 1: Buat batasan ketinggian untuk bidang teks
Langkah 2: Pilih Batasan Tinggi
Langkah 3: Ubah nilai konstan Tinggi Kendala
borderStyle
ke apa pun kecuali bulat. Gunakan Editor -> Size to Fit Content
agar tata letak melakukan tugasnya. Gunakan inspektur properti pada Anda UITextField
untuk memeriksa ketinggiannya. Gunakan ini untuk mengatur batasan ketinggian Anda, dan sekarang Anda dapat mengubah borderStyle
kembali ke yang bulat.
1.) Ubah Gaya perbatasan di InterfaceBuilder.
2.) Setelah itu Anda dapat mengubah ukuran.
3.) Buat IBOutlet ke TextField Anda dan masukkan kode berikut untuk Anda viewDidLoad()
untuk mengubah kembali BorderStyle.
textField.borderStyle = UITextBorderStyleRoundedRect;
Swift 3:
textField.borderStyle = UITextBorderStyle.roundedRect
di viewWillAppear Anda mengatur sudut sebagai bulat
yourUITextField.borderStyle = UITextBorderStyleRoundedRect;
Ikuti dua langkah sederhana ini dan dapatkan peningkatan ketinggian Anda UItextField
.
Langkah 1: klik kanan pada file XIB dan buka seperti pada "Source Code".
Langkah 2: Temukan UITextfield
sumber yang sama dan atur bingkai seperti yang Anda inginkan.
Anda dapat menggunakan langkah-langkah ini untuk mengubah bingkai kontrol apel apa pun.
Pembaruan untuk iOS 6: menggunakan tata-letak otomatis, meskipun Anda masih tidak dapat mengatur ketinggian UITextField dari Inspektur Ukuran di Pembuat Antarmuka (setidaknya Xcode 4.5 DP4), sekarang dimungkinkan untuk menetapkan batasan Tinggi pada itu, yang dapat Anda edit dari Interface Builder.
Selain itu, jika Anda mengatur tinggi frame berdasarkan kode, tata letak otomatis dapat mengatur ulang tergantung pada kendala lain yang mungkin Anda miliki.
Saya tahu ini pertanyaan lama tapi saya hanya ingin menambahkan jika Anda ingin dengan mudah mengubah ketinggian UITextField dari dalam IB kemudian cukup mengubah jenis perbatasan UITextfield ke apa pun selain jenis sudut bulat standar. Kemudian Anda dapat meregangkan atau mengubah atribut ketinggian dengan mudah dari dalam editor.
@IBDesignable
class BigTextField: UITextField {
override func didMoveToWindow() {
super.didMoveToWindow()
if window != nil {
borderStyle = .roundedRect
}
}
}
UITextField
denganBigTextField
.Border Style
ke none
.Kontribusi menyedihkan saya untuk masalah bodoh ini. Di IB atur style ke none sehingga Anda bisa mengatur ketinggian, lalu di IB atur kelas menjadi subclass UITextField
yang memaksa style menjadi rounded rect.
@interface JLTForcedRoundedRectTextField : UITextField
@end
@implementation JLTForcedRoundedRectTextField
- (void)awakeFromNib
{
self.borderStyle = UITextBorderStyleRoundedRect;
}
@end
Itu membuat saya tidak perlu meretas file XIB atau menulis kode gaya ke pengontrol tampilan saya.
Ketinggian UITextField tidak dapat disesuaikan dalam Attributes Inspector hanya jika memiliki gaya batas sudut bulat standar, tetapi menambahkan batasan ketinggian (ditambah kendala lain yang diperlukan untuk memenuhi sistem pembayaran otomatis - seringkali dengan hanya menggunakan Add Missing Constraints) untuknya dan menyesuaikan kendala akan menyesuaikan ketinggian bidang teks. Jika Anda tidak ingin kendala, kendala dapat dihapus (Hapus Kendala) dan bidang teks akan tetap pada ketinggian yang disesuaikan.
Bekerja seperti pesona.
UITextField *txt = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
[txt setText:@"Ananth"];
[self.view addSubview:txt];
Dua argumen terakhir adalah lebar dan tinggi, Anda dapat mengatur sesuai keinginan ...
Anda dapat menggunakan properti bingkai dari textfield untuk mengubah frame Like-Textfield.frame = CGRECTMake (sumbu x, sumbu y, lebar, tinggi)
Ini cukup sederhana.
yourtextfield.frame = CGRectMake (yourXAxis, yourYAxis, yourWidth, yourHeight);
Nyatakan bidang teks Anda sebagai properti umum & ubah bingkainya di mana pun Anda ingin melakukannya dalam kode Anda.
Selamat Coding!
Jika Anda membuat banyak UITextFields
itu bisa lebih cepat untuk subkelas UITextView
dan menimpa metode setFrame dengan
-(void)setFrame:(CGRect)frame{
[self setBorderStyle:UITextBorderStyleRoundedRect];
[super setFrame:frame];
[self setBorderStyle:UITextBorderStyleNone];
}
Dengan cara ini Anda bisa menelepon
[customTextField setFrame:<rect>];