Tampilan login saya memiliki subview yang memiliki UIActivityView
dan UILabel
mengatakan "Masuk ...". Subview ini memiliki sudut yang tidak membulat. Bagaimana saya bisa membuatnya bulat?
Apakah ada cara untuk melakukannya di dalam xib saya?
ios
cocoa-touch
uiview
itu tentang kode
sumber
sumber
cornerRadius
properti ke tabel menggunakan Interface Builder saja, tanpa harus menggunakan gambar yang telah dibuat sebelumnya atau mengaturnya dalam kode.Jawaban:
Coba ini
...
Catatan: Jika Anda mencoba menerapkan sudut bulat ke
UIViewController
tampilan, itu tidak boleh diterapkan dalam konstruktor tampilan controller, melainkan dalam-viewDidLoad
, setelahview
sebenarnya dibuat instantiated.sumber
Anda juga dapat menggunakan fitur Atribut yang Ditentukan Pengguna Atribut pembangun antarmuka untuk mengatur jalur kunci
layer.cornerRadius
ke nilai. Pastikan Anda menyertakanQuartzCore
perpustakaan.Trik ini juga berfungsi untuk mengatur layer.borderWidth namun tidak akan berhasil karena
layer.borderColor
ini mengharapkanCGColor
bukanUIColor
.Anda tidak akan dapat melihat efek di storyboard karena parameter ini dievaluasi saat runtime.
sumber
Clip Subviews
opsi pada tampilan IB jugaSekarang Anda dapat menggunakan kategori cepat di UIView (kode di bawah gambar) dengan @IBInspectable untuk menampilkan hasilnya di storyboard (Jika Anda menggunakan kategori, gunakan hanya cornerRadius dan bukan layer.cornerRadius sebagai jalur kunci.
sumber
@IBDesignable
untuk mendapatkan pratinjau langsung di IB! (Lebih banyak di nshipster.com/ibinspectable-ibdesignable )Cepat
Jawaban singkat:
Jawaban Tambahan
Jika Anda sampai pada jawaban ini, Anda mungkin sudah cukup melihat untuk menyelesaikan masalah Anda. Saya menambahkan jawaban ini untuk memberikan sedikit penjelasan visual mengapa hal-hal melakukan apa yang mereka lakukan.
Jika Anda mulai dengan yang biasa
UIView
memiliki sudut persegi.Anda bisa memberikannya sudut-sudut dengan mengubah
cornerRadius
properti tampilanlayer
.Nilai radius yang lebih besar menghasilkan sudut yang lebih bulat
dan nilai yang lebih kecil menghasilkan sudut yang lebih sedikit.
Ini mungkin cukup untuk menyelesaikan masalah Anda di sana. Namun, terkadang tampilan dapat memiliki subview atau sublapisan yang melampaui batas tampilan. Misalnya, jika saya menambahkan sub tampilan seperti ini
atau jika saya menambahkan sub lapisan seperti ini
Maka saya akan berakhir dengan
Sekarang, jika saya tidak ingin hal-hal tergantung di luar batas, saya bisa melakukan ini
atau ini
yang memberikan hasil ini:
Kedua
clipsToBounds
danmasksToBounds
yang setara . Hanya saja yang pertama digunakan denganUIView
dan yang kedua digunakan denganCALayer
.Lihat juga
sumber
blueView.frame.size.height/2
) menghasilkan sudut bulat sempurna.Pendekatan yang berbeda dari yang Ed Marty lakukan:
Anda memerlukan setMasksToBounds untuk memuat semua objek dari IB ... saya mendapat masalah ketika pandangan saya membulat, tetapi tidak memiliki objek dari IB: /
ini memperbaikinya = D harap ini membantu!
sumber
Seperti dijelaskan dalam posting blog ini , berikut adalah metode untuk membulatkan sudut-sudut UIView:
Bagian kerennya adalah Anda bisa memilih sudut mana yang ingin dibulatkan.
sumber
Anda harus terlebih dahulu mengimpor file header
<QuartzCore/QuartzCore.h>
Jangan ketinggalan untuk menggunakan -
setMasksToBounds
, jika tidak, efeknya mungkin tidak ditampilkan.sumber
Anda dapat menggunakan
UIView
kelas khusus berikut ini yang juga dapat mengubah warna dan lebar perbatasan. Karena ini adalahIBDesignalbe
Anda dapat mengubah atribut dalam pembangun antarmuka juga.sumber
sumber
Swift 4 - Menggunakan IBDesignable
sumber
layer.cornerRadius
dikembalikan ke keadaan semula? (ei bagaimana storyboard xcode mengetahui cara mengaturcornerRadius
hanya setelah aslinyaUIView
diinisialisasi)?sumber
- SwiftUI
Di SwiftUI, Anda dapat menggunakan
cornerRadius
pengubah langsung pada apa pun yangView
Anda inginkan. Sebagai contoh dari pertanyaan ini:Perhatikan bahwa tidak ada lagi berlian seperti jari-jari, jadi bahkan jika Anda mengatur sudutRadius lebih dari setengah tinggi , itu akan membulatkannya dengan mulus.
Lihatlah jawaban ini untuk mengetahui caranya Putaran Corners khusus di SwiftUI
sumber
Silakan impor
Quartzcore framework
maka Anda harus mengatursetMaskToBounds
keTRUE
ini garis sangat penting.Kemudian:
[[yourView layer] setCornerRadius:5.0f];
sumber
sumber
Lakukan ini secara pemrograman dalam objektif c
Kami Juga Bisa melakukan ini dari stoaryboard.
sumber
jika sudut bulat tidak berfungsi di viewDidload () lebih baik menulis kode di viewDidLayoutSubview ()
Semoga ini membantu!
sumber
Anda juga dapat menggunakan gambar:
sumber
atur Property cornerRadious untuk Round view
set masksToBounds Nilai Boolean untuk gambar tidak akan tetap ditarik di luar batas radius sudut
sumber
Menggunakan Ekstensi UIView:
Pemakaian:
sumber
Di Swift 4.2 dan Xcode 10.1
sumber
PADA Xcode 6 Upaya Anda
atau
sumber