Saya ingin meninggalkan sedikit ruang di awal UITextField, seperti di sini: Tambahkan margin kiri ke UITextField
Tetapi saya tidak tahu bagaimana melakukannya dengan Swift.
ios
swift
cocoa-touch
uitextfield
LinusGeffarth
sumber
sumber
UITextField.leftView = paddingView
. jadi beri tampilan padding lebar yang Anda inginkan.Jawaban:
Inilah yang saya gunakan saat ini:
Cepat 4.2
Cepat 4
Swift 3:
Saya tidak pernah mengatur padding lain tetapi Anda bisa men-tweak. Kelas ini tidak menangani rightView dan leftView di bidang teks. Jika Anda ingin hal itu ditangani dengan benar, Anda dapat menggunakan sesuatu seperti (contoh di objc dan saya hanya memerlukan rightView:
sumber
newBounds
metodeUIEdgeInsetsInsetRect
. Alih-alihreturn self.newBounds(bounds)
Anda bisa menggunakanreturn UIEdgeInsetsInsetRect(bounds, padding)
dan menghapusnewBounds
metode.Jika Anda menggunakan ekstensi, tidak perlu subkelas UITextField dan fungsionalitas baru akan tersedia untuk setiap UITextField di aplikasi Anda:
Ketika saya perlu mengatur padding bidang teks di mana saja di aplikasi saya, saya cukup melakukan hal berikut:
Menggunakan ekstensi Swift, fungsionalitas ditambahkan ke UITextField secara langsung tanpa subklasifikasi.
Semoga ini membantu!
sumber
X, Y, Z adalah nilai yang Anda inginkan
sumber
Margin tersebut dapat dicapai dengan menetapkan
leftView
/rightView
keUITextField
.Diperbarui Untuk Swift 4
Saya baru saja menambahkan / menempatkan
UIView
kiri dan kanan bidang teks. Jadi sekarang pengetikan akan dimulai setelah tampilan.Terima kasih
Semoga ini bisa membantu ...
sumber
Swift 4, Xcode 9
Saya suka jawaban Pheepster , tetapi bagaimana kalau kita melakukan semuanya dari ekstensi, tanpa memerlukan kode VC atau subclassing:
sumber
rightView?.frame.size.width ?? 0
paddingLeft
kepaddingLeftCustom
dan yang lain juga. Jika saya belum melakukan ini, bug yang mengikuti saya dua minggu akan muncul ketika Anda menggunakan Tampilan yang memiliki UITextView (seperti UISearchBar). Hanya ... jangan mengatur nama standar.di Swift 4.2 dan Xcode 10
Awalnya bidang teks saya seperti ini.
Setelah menambahkan padding di sisi kiri bidang teks saya ...
Seperti ini kita dapat membuat sisi kanan juga. (TextFieldName.rightViewMode = .always)
Jika Anda ingin kode jenis SharedInstance (Tulis sekali pakai setiap perangkat) lihat kode di bawah ini.
Sekarang panggil fungsi ini seperti ini.
sumber
Solusi sederhana cepat 3 - tambahkan kode ke viewDidLoad:
Tidak perlu kode yang sangat panjang
sumber
Gunakan ekstensi Swift 5 saya yang sudah teruji:
Cara Penggunaan
sumber
Untuk membuat tampilan padding untuk UITextField di Swift 5
sumber
Subclassing UITextField adalah caranya. Buka taman bermain dan tambahkan kode berikut:
sumber
Ini jawaban Haagenti yang diperbarui ke Swift 4.2:
Referensi: Memutakhirkan Ke Swift 4.2 .
Sunting : Akun untuk tombol hapus.
sumber
Buat UIView dengan ruang bantalan yang diperlukan dan tambahkan ke anggota textfield.leftView dan atur anggota textfield.leftViewMode ke UITextFieldViewMode.Always
sumber
Masukkan kode ini di
viewDidLoad()
:Ini bekerja untuk saya :)
sumber
Satu baris kode ini menyelamatkan saya:
Untuk Xamarin.iOS:
Untuk Swift:
sumber
Jawaban ScareCrow dalam Swift 3
sumber
Di Swift 3. Anda dapat menggunakan UITextField khusus dengan indent yang diatur dalam konstruktornya. Tidak perlu deklarasi tambahan di controller.
sumber
Cara mudah: untuk melakukan ini dengan memperluas UITextField
Kemudian Anda dapat mengatur bantalan ke tepi mana pun dengan cara ini:
sumber
Saya lebih suka menggunakan
IBDesignable
kelas danIBInspectable
properti untuk memungkinkan saya mengatur padding melalui storyboard Xcode dan tetap dapat digunakan kembali. Saya juga memperbarui kode untuk berfungsi di Swift 4.sumber
* Memperluas UITextField di Swift 5 *
sumber
sumber