Bagaimana saya bisa menggambar UIView khusus yang benar-benar hanya bola (lingkaran 2D)? Apakah saya akan mengganti metode drawRect? Dan bisakah seseorang menunjukkan kode untuk menggambar lingkaran biru?
Juga, apakah tidak apa-apa untuk mengubah bingkai pandangan itu di dalam kelas itu sendiri? Atau apakah saya perlu mengubah frame dari kelas yang berbeda?
(Hanya mencoba mengatur bola memantul)
Iya:
Idealnya tidak, tetapi Anda bisa.
Saya akan membiarkan orang tua mengendalikan itu.
sumber
CGContextSetFillColorWithColor(ctx, self.colorOfCircle.CGColor);
, metode yang diusulkan dalam solusiCGColorGetComponents
hanya bekerja dengan beberapa warna, lihat stackoverflow.com/questions/9238743/…rect
, saya tidak sengaja menggunakanself.frame
elips. Nilai yang benar adalahself.bounds
. Doh! :)Berikut cara lain dengan menggunakan UIBezierPath (mungkin sudah terlambat ^^) Buat lingkaran dan tutupi UIView dengannya, sebagai berikut:
sumber
layerClass
metode kelas untuk menjadikannya lapisan bentuk.Kontribusi saya dengan ekstensi Swift:
Panggil saja
myView.asCircle()
sumber
masksToBounds
ke true dan usingself
semuanya opsional dalam jawaban ini, tetapi masih merupakan solusi terpendek dan terbaikSwift 3 - kelas khusus, mudah digunakan kembali. Menggunakan
backgroundColor
set in builder UIsumber
Kelas Swift 3 :
sumber
Cara lain untuk mendekati menggambar lingkaran (dan bentuk lain) adalah dengan menggunakan topeng. Anda menggambar lingkaran atau bentuk lain dengan, pertama, membuat topeng dari bentuk yang Anda butuhkan, kedua, menyediakan kotak warna Anda dan, ketiga, menerapkan topeng ke kotak warna itu. Anda dapat mengubah topeng atau warna untuk mendapatkan lingkaran khusus atau bentuk lainnya.
Ini adalah output dari kode di atas:
sumber
Ada alternatif lain untuk orang malas. Anda bisa mengatur
layer.cornerRadius
jalur kunci untuk tampilan Anda di Interface Builder . Misalnya, jika tampilan Anda memiliki lebar = tinggi 48 , setellayer.cornerRadius = 24
:Namun, ini hanya berfungsi jika Anda memiliki ukuran tampilan statis
(width/height is fixed)
dan tidak menunjukkan lingkaran di pembuat antarmuka.sumber
Swift 3 - Xcode 8.1
sumber