如何屏蔽UIImageView?我試圖用這樣的東西掩蓋圖像:你能幫幫我嗎?我正在使用此代碼:- (void) viewDidLoad {
UIImage *OrigImage = [UIImage imageNamed:@"dogs.png"];
UIImage *mask = [UIImage imageNamed:@"mask.png"];
UIImage *maskedImage = [self maskImage:OrigImage withMask:mask];
myUIIMage.image = maskedImage;}
3 回答
犯罪嫌疑人X
TA貢獻2080條經驗 獲得超4個贊
有一種更簡單的方法。
#import <QuartzCore/QuartzCore.h>// remember to include Framework as wellCALayer *mask = [CALayer layer];mask.contents = (id)[[UIImage imageNamed:@"mask.png"] CGImage];mask.frame = CGRectMake(0, 0, <img_width>, <img_height>);yourImageView.layer.mask = mask;yourImageView.layer.masksToBounds = YES;
對于Swift 4和plus,請遵循以下代碼
let mask = CALayer()mask.contents = [ UIImage(named: "right_challenge_bg")?.cgImage] as Anymask.frame = CGRect(x: 0, y: 0, width: leftBGImage.frame.size.width, height: leftBGImage.frame.size.height)leftBGImage.layer.mask = mask leftBGImage.layer.masksToBounds = true
慕妹3242003
TA貢獻1824條經驗 獲得超6個贊
本教程使用此方法有兩個參數:image并且maskImage,您必須在調用方法時進行設置。示例調用可能看起來像這樣,假設方法在同一個類中并且圖片在您的包中:
注意 - 令人驚訝的是,圖像甚至不必具有相同的大小。
...UIImage *image = [UIImage imageNamed:@"dogs.png"];UIImage *mask = [UIImage imageNamed:@"mask.png"];// result of the masking methodUIImage *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;}在您提供代碼后,我添加了一些數字作為注釋,以供參考。你還有兩個選擇。整個事情是一種方法,你在某處調用。您不需要在其中創建圖像:這會將方法的可重用性降低到零。
讓代碼正常工作 將方法頭(1.)更改為
- (UIImage *)maskImageMyImages {然后,在改變變量名2至
UIImage *maskImage = [UIImage imageNamed:@"mask.png"];
該方法將返回您的蒙版圖像,因此您必須在某個地方調用此方法。你能告訴我們你調用方法的代碼嗎?
- 3 回答
- 0 關注
- 508 瀏覽
添加回答
舉報
0/150
提交
取消
