Saya mencoba menutupi gambar dengan sesuatu seperti ini:
Maukah Anda membantu saya?
Saya menggunakan kode ini:
- (void) viewDidLoad {
UIImage *OrigImage = [UIImage imageNamed:@"dogs.png"];
UIImage *mask = [UIImage imageNamed:@"mask.png"];
UIImage *maskedImage = [self maskImage:OrigImage withMask:mask];
myUIIMage.image = maskedImage;
}
ios
objective-c
uiimage
mask
Mc.Lover
sumber
sumber
Jawaban:
Ada cara yang lebih mudah.
Untuk Swift 4 dan plus ikuti kode di bawah ini
sumber
viewDidLoad
tetapi tidak ada yang terjadi!Tutorial menggunakan metode ini dengan dua parameter:
image
danmaskImage
, ini harus Anda setel saat memanggil metode. Contoh panggilan bisa terlihat seperti ini, dengan asumsi metode berada di kelas yang sama dan gambar ada di bundel Anda:Catatan - gambarnya bahkan tidak harus berukuran sama.
Setelah Anda memberikan kode Anda, saya menambahkan beberapa nomor sebagai komentar untuk referensi. Anda masih punya dua pilihan. Semua ini adalah metode, yang Anda panggil ke suatu tempat. Anda tidak perlu membuat gambar di dalamnya: ini mengurangi kegunaan kembali metode menjadi nol.
Agar kode Anda berfungsi. Ubah metode head ( 1. ) menjadi
Kemudian ubah nama variabel di 2. menjadi
Metode ini akan mengembalikan gambar bertopeng sehingga Anda harus memanggil metode ini di suatu tempat. Dapatkah Anda menunjukkan kepada kami kode di mana Anda memanggil metode Anda?
sumber
UIImage *image
kode? !!! karena pada-(UIimage *) maskeImage
compiler memberikan redefinition error!Swift 3 - Solusi Paling Sederhana yang Saya Temukan
Saya membuat
@IBDesignable
untuk ini sehingga Anda dapat melihat efeknya langsung di papan cerita Anda.Cara Penggunaan
Contoh
Catatan
sumber
Saya mencoba kedua kode menggunakan CALayer atau CGImageCreateWithMask tetapi tidak ada yang tidak berhasil untuk saya
Tetapi saya menemukan bahwa masalahnya ada pada format file png, BUKAN kodenya !!
jadi hanya untuk berbagi temuan saya!
Jika Anda ingin menggunakan
Anda harus menggunakan png 24bit tanpa alpha channel
Jika Anda ingin menggunakan CALayer mask, Anda harus menggunakan (24bit atau 8bit) png dengan alpha channel dimana bagian transparan dari png Anda akan menutupi gambar (untuk smooth gradient alpha mask .. gunakan 24bit png dengan alpha channel)
sumber
Ini berhasil untuk saya.
sumber
SWIFT 3 XCODE 8.1.0
// untuk digunakan
sumber
Versi cepat dari solusi yang diterima:
Untuk berjaga-jaga jika seseorang membutuhkannya.
Ini bekerja untuk saya dengan sempurna.
sumber
kami menemukan, bahwa jawaban yang benar tidak berfungsi sekarang dan menerapkan kelas drop-in kecil, yang membantu menutupi gambar apa pun di UIImageView.
Tersedia di sini: https://github.com/Werbary/WBMaskedImageView
Contoh:
sumber