Apakah ada cara yang dibuat untuk membuat UILabel yang terpojok? Jika jawabannya tidak, bagaimana cara membuat objek seperti itu?
sumber
Apakah ada cara yang dibuat untuk membuat UILabel yang terpojok? Jika jawabannya tidak, bagaimana cara membuat objek seperti itu?
iPhone OS 3.0 dan yang lebih baru mendukung cornerRadius
properti di CALayer
kelasnya. Setiap tampilan memiliki CALayer
instance yang dapat Anda manipulasi. Ini berarti Anda bisa mendapatkan sudut bulat dalam satu baris:
view.layer.cornerRadius = 8;
Anda perlu #import <QuartzCore/QuartzCore.h>
dan menautkan ke kerangka kerja QuartzCore untuk mendapatkan akses ke header dan properti CALayer.
Salah satu cara untuk melakukannya, yang saya gunakan baru-baru ini, adalah membuat subclass UIView yang hanya menggambar persegi panjang bulat, dan kemudian membuat UILabel atau, dalam kasus saya, UITextView, subview di dalamnya. Secara khusus:
UIView
subkelas dan beri nama seperti itu RoundRectView
.RoundRectView
's drawRect:
metode, menggambar jalan di sekitar batas-batas pandangan menggunakan panggilan Graphics Core seperti CGContextAddLineToPoint () untuk tepi dan dan CGContextAddArcToPoint () untuk sudut bulat.UILabel
instance dan menjadikannya subview dari RoundRectView.label.frame = CGRectInset(roundRectView.bounds, 8, 8);
)Anda bisa menempatkan RoundRectView pada tampilan menggunakan Interface Builder jika Anda membuat UIView umum dan kemudian mengubah kelasnya menggunakan inspektur. Anda tidak akan melihat kotak sampai Anda mengkompilasi dan menjalankan aplikasi Anda, tetapi setidaknya Anda akan dapat menempatkan subview dan menghubungkannya ke outlet atau tindakan jika diperlukan.
Untuk perangkat dengan iOS 7.1 atau yang lebih baru, Anda perlu menambahkan:
sumber
Untuk Swift IOS8 dan selanjutnya berdasarkan jawaban OScarsWyck:
sumber
YES
menjaditrue
.UILabel
yang disebut:myLabel
.#import <QuartzCore/QuartzCore.h>
di
viewDidLoad
baris Anda tulis ini:self.myLabel.layer.cornerRadius = 8;
Semoga berhasil
sumber
Anda dapat membuat batas bulat dengan lebar batas kontrol apa pun dengan cara ini: -
Ganti saja
lblName
denganUILabel
.Catatan: - Jangan lupa untuk mengimpor
<QuartzCore/QuartzCore.h>
sumber
Saya membuat
UILabel
subclass cepat untuk mencapai efek ini. Selain itu saya secara otomatis mengatur warna teks menjadi hitam atau putih untuk kontras maksimal.Hasil
Posting SO yang Digunakan:
Tempat bermain
Cukup tempel ini ke Playground iOS:
sumber
Metode lain adalah menempatkan png di belakang label UIL. Saya memiliki pandangan dengan beberapa label yang menampilkan png latar belakang tunggal yang memiliki semua karya seni untuk masing-masing label.
sumber
xCode 7.3.1 iOS 9.3.2
sumber
Jika Anda ingin sudut bulat dari UI objek seperti (
UILabel
,UIView
,UIButton
,UIImageView
) oleh storyboard kemudian menetapkanclip to bounds
benar dan mengaturUser Defined Runtime Attributes
jalur Key sebagailayer.cornerRadius
, jenis = Jumlah dan nilai = 9 (sebagai kebutuhan Anda)sumber
sumber
Cepat 3
Jika Anda ingin label bulat dengan warna latar belakang, selain sebagian besar jawaban lain, Anda perlu mengatur
layer
warna latar belakang juga. Ini tidak berfungsi saat mengaturview
warna latar belakang.Jika Anda menggunakan tata letak otomatis, ingin beberapa lapisan di sekitar label dan tidak ingin mengatur ukuran label secara manual, Anda dapat membuat UILabel subclass dan menimpa
intrinsincContentSize
properti:Untuk menggabungkan keduanya, Anda juga perlu mengatur
label.textAlignment = center
, jika tidak, teks akan dibiarkan rata.sumber
Di Monotouch / Xamarin.iOS saya memecahkan masalah yang sama seperti ini:
sumber
Berfungsi sempurna di Swift 2.0
sumber
Apakah Anda mencoba menggunakan
UIButton
dari pembuat antarmuka (yang memiliki sudut membulat) dan bereksperimen dengan pengaturan untuk membuatnya terlihat seperti label. jika yang Anda inginkan adalah menampilkan teks statis di dalamnya.sumber
"cornerRadius" adalah properti utama untuk mengatur ujung membulat, di mana jika Anda menggunakan gaya yang sama untuk semua label dalam aplikasi Anda, saya akan merekomendasikan metode ekstensi.
Kode:
Keluaran:
Mengapa Perlu Metode Ekstensi?
Buat file Swift dan tambahkan kode berikut, yang memiliki metode Extention ke kelas "UILabel", di mana metode ini ditentukan pengguna tetapi akan bekerja untuk semua label dalam aplikasi Anda dan akan membantu menjaga konsistensi dan membersihkan kode, jika Anda mengubah gaya apa pun di masa depan hanya membutuhkan metode ekstensi.
sumber
Tergantung pada apa yang sebenarnya Anda lakukan, Anda dapat membuat gambar dan mengaturnya sebagai latar belakang secara terprogram.
sumber