Tutorial menggunakan metode ini dengan dua parameter: image
dan maskImage
, 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.
...
UIImage *image = [UIImage imageNamed:@"dogs.png"];
UIImage *mask = [UIImage imageNamed:@"mask.png"];
// result of the masking method
UIImage *maskedImage = [self maskImage:image withMask:mask];
...
- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
CGImageRef maskRef = maskImage.CGImage;
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);
CGImageRef maskedImageRef = CGImageCreateWithMask([image CGImage], mask);
UIImage *maskedImage = [UIImage imageWithCGImage:maskedImageRef];
CGImageRelease(mask);
CGImageRelease(maskedImageRef);
// returns new image with mask applied
return maskedImage;
}
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
- (UIImage *)maskImageMyImages {
Kemudian ubah nama variabel di 2. menjadi
UIImage *maskImage = [UIImage imageNamed:@"mask.png"];
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?