Saya telah mendesain elemen UI dalam sketsa, dan salah satunya memiliki bayangan dengan blur 1 dan spread 0. Saya melihat dokumen untuk properti lapisan tampilan dan lapisan tidak memiliki apa pun yang bernama menyebar atau kabur, atau apa pun yang setara (satu-satunya kontrol adalah just shadowOpacity) Bagaimana cara mengontrol hal-hal seperti blur dan menyebar?
EDIT:
Berikut adalah pengaturan saya di Sketch:
Dan inilah yang saya ingin bayangan saya terlihat:
Dan inilah yang terlihat saat ini: Catatan, Anda harus mengklik gambar untuk benar-benar melihat bayangannya.
Kode saya adalah sebagai berikut:
func setupLayer(){
view.layer.cornerRadius = 2
view.layer.shadowColor = Colors.Shadow.CGColor
view.layer.shadowOffset = CGSize(width: 0, height: 1)
view.layer.shadowOpacity = 0.9
view.layer.shadowRadius = 5
}
ios
swift
uiview
core-graphics
Quantaliinuxite
sumber
sumber
Jawaban:
Berikut cara menerapkan semua 6 properti bayangan Sketsa ke lapisan UIView dengan akurasi yang hampir sempurna:
Katakanlah kami ingin mewakili yang berikut:
Anda dapat dengan mudah melakukannya melalui:
atau lebih singkatnya:
Contoh:
catatan:
spread
, ini membuat kode jalur berdasarkan padabounds
CALayer. Jika batas lapisan pernah berubah, Anda ingin memanggilapplySketchShadow()
metode itu lagi.sumber
maskToBounds = false
.maskToBounds = false
. Contoh di mana itu akan gagal adalah saat menerapkan bayangan ini ke fileUIButton
.shadowRadius = blur / UIScreen.main.scale
berbeda dengan hard-codingblur / 2.0
? Atau, adakah alasan lain untuk membagi dengan 2? @matchifang Apakah Anda mengetahui hal ini?Anda dapat mencoba ini .... Anda dapat bermain-main dengan nilai. Ini
shadowRadius
menentukan jumlah buram.shadowOffset
menentukan kemana bayangan pergi.sumber
Sketsa Bayangan Menggunakan IBDesignable dan IBInspectable di Swift 4
sumber
layer.shadowRadius * 2
Tidakkah Anda harus kembali untuk pengambilKode ini bekerja dengan sangat baik untuk saya:
sumber
Bagi mereka yang mencoba menerapkan bayangan ke jalur yang telah ditentukan (Seperti untuk tampilan melingkar, misalnya), inilah yang saya dapatkan:
Saya akan memposting beberapa contoh nanti, tetapi ini telah berhasil untuk tampilan melingkar bagi saya.
sumber
1
denganx
dany
0
shapeLayer.applyShadow(color: .black, alpha: 1, x: 0, y: 0, blur: 0, spread: 1, path: path)
. Dalam hal ini bayangan memiliki offset sementara seharusnya tidak. Di sini segitiga harus memiliki bayangan menyebar 1px ke segala arah ibb.co/YjwRb9BSolusi saya berdasarkan balasan posting ini: (Swift 3)
sumber
Saya sangat suka jawaban yang diposting di sini dan saran di komentar. Beginilah cara saya mengubah solusi itu:
PEMAKAIAN:
sumber
Ini mungkin sedikit diggin dalam sejarah, tetapi mungkin beberapa memiliki masalah yang sama. Saya menggunakan sampel kode dari jawaban yang diterima. Namun efeknya sangat berbeda: - nilai y harus sekitar setengah dibandingkan dengan nilai yang sama dalam sketsa - Saya mencoba menerapkan bayangan pada bilah navigasi dan efeknya sangat berbeda - hampir tidak terlihat saat menggunakan nilai yang sama dengan sketsa.
Jadi tampaknya metode tersebut sama sekali tidak mencerminkan parameter sketsa. Ada petunjuk?
sumber