Adakah yang bisa menyarankan cara untuk menggarisbawahi judul UIButton? Saya memiliki UIButton tipe Kustom, dan saya ingin Judulnya digarisbawahi, tetapi Pembuat Antarmuka tidak memberikan opsi apa pun untuk melakukannya.
Di Pembuat Antarmuka saat Anda memilih Opsi Font untuk Tombol, ini menyediakan opsi untuk memilih Tidak Ada, Tunggal, Ganda, Warna tetapi tidak ada yang memberikan perubahan apa pun pada Judul pada Tombol.
Setiap bantuan dihargai.
text
formatting
uibutton
RVN
sumber
sumber
Jawaban:
UIUnderlinedButton.h
UIDisusunButton.m
sumber
drawRect
tidak dipanggilnya rotasi. Ini dapat diselesaikan dengan mengatur tombol Anda untuk menggambar ulang seperti itu:myButton.contentMode = UIViewContentModeRedraw;
yang memaksa tombol untuk menggambar kembali ketika batas berubah.setTitle
metode seperti ini:objective-c - (void)setTitle:(NSString *)title forState:(UIControlState)state { [super setTitle:title forState:state]; [self setNeedsDisplay]; }
Untuk menggunakan pembangun antarmuka untuk menggarisbawahi, kita harus:
Video yang dibuat orang lain https://www.youtube.com/watch?v=5-ZnV3jQd9I
sumber
setTitle
dengan teks yang dikaitkan. Bagi saya membuat tombol kustom untuk menggambar garis bawah agak eksotis (mungkin saya masih baru untuk iOS walaupun satu App selesai).Dari iOS6 sekarang mungkin untuk menggunakan NSAttributedString untuk melakukan garis bawah (dan apa pun yang dikaitkan dukungan string) dengan cara yang jauh lebih fleksibel:
Catatan: menambahkan ini sebagai jawaban lain - sebagai solusi yang sama sekali berbeda dengan jawaban saya sebelumnya.
Sunting: anehnya (setidaknya di iOS8) Anda harus menggarisbawahi karakter pertama jika tidak akan berfungsi!
jadi sebagai solusinya, atur char pertama digarisbawahi dengan warna yang jelas!
sumber
Anda dapat melakukannya di pembuat antarmuka itu sendiri.
sumber
Ini sangat sederhana dengan string yang dikaitkan
Membuat kamus dengan atribut yang ditetapkan dan berlaku untuk string yang dikaitkan. Kemudian Anda dapat mengatur string yang dikaitkan sebagai attibutedtitle di uibutton atau attributedtext di uilabel.
sumber
commentString
; apakah Anda menyalin dari jawaban @ NickH247?Inilah fungsi saya, berfungsi di Swift 1.2.
Ekstensi UPDATE Swift 3.0:
sumber
Jawaban Nick adalah cara yang hebat dan cepat untuk melakukan ini.
Saya menambahkan dukungan
drawRect
untuk bayangan.Jawaban Nick tidak memperhitungkan jika judul tombol Anda memiliki bayangan di bawah teks:
Tetapi Anda dapat memindahkan garis bawah ke bawah dengan ketinggian bayangan seperti ini:
Maka Anda akan mendapatkan sesuatu seperti ini:
sumber
Untuk Swift 3 ekstensi berikut dapat digunakan:
sumber
sumber
Memperluas jawaban oleh @Nick H247, saya mengalami masalah ketika awalnya garis bawahnya tidak digambar ulang ketika tombol diubah ukurannya pada rotasi; ini dapat diselesaikan dengan mengatur tombol Anda untuk menggambar kembali seperti:
Ini memaksa tombol untuk menggambar ulang ketika batas berubah.
Kedua, kode asli mengasumsikan Anda hanya memiliki 1 baris teks di tombol (tombol saya membungkus 2 baris pada rotasi) dan garis bawah hanya muncul pada baris terakhir teks. Kode drawRect dapat dimodifikasi untuk menghitung terlebih dahulu jumlah baris di tombol, kemudian meletakkan garis bawah pada setiap baris daripada hanya bagian bawah, seperti:
Semoga kode ini membantu orang lain!
sumber
Dengan cepat
sumber
Anda dapat menggunakan kode ini untuk menambahkan garis bawah dengan tombol spasi di.
1 - Referensi pembangun antarmuka
2 - menggunakan kode yang dijelaskan
sumber
Versi Swift 5.0 yang bekerja pada September 2019 di Xcode 10.3:
Untuk menggunakannya, atur judul tombol Anda terlebih dahulu
button.setTitle("Button Title", for: .normal)
lalu panggilbutton.underlineText()
untuk membuat judul itu digarisbawahi.sumber
Bagaimana kita menangani kasing ketika kita menekan tombol bergaris bawah? Dalam hal itu warna teks tombol berubah sesuai dengan warna yang disorot tetapi garis tetap warna asli. Katakanlah jika warna teks tombol dalam keadaan normal adalah hitam maka garis bawahnya juga akan memiliki warna hitam. Warna yang disorot tombol adalah putih. Tekan terus tombol mengubah warna teks tombol dari hitam ke putih tetapi warna garis bawah tetap hitam.
sumber
Saya percaya ini adalah beberapa bug pada editor font di XCode. Jika Anda menggunakan pembangun antarmuka, Anda harus mengubah judul dari Plain ke Attributed, buka TextEdit buat teks yang digarisbawahi dan salin-tempel ke kotak teks di XCode
sumber
Jawaban Nick H247 tetapi pendekatan Swift:
sumber
sumber
Versi Swift 3 untuk jawaban @ NickH247 dengan warna garis bawah kustom, linewidth dan celah:
sumber