新聞中心
ios中view添加到蒙版上,為什么背景變透明了
因為你的蒙板是透明的,
目前成都創(chuàng)新互聯(lián)已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站運營、企業(yè)網(wǎng)站設(shè)計、北屯網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
如果父控件透明,則子控件也會透明
iOS高級繪圖之路徑剪切和蒙版
裁剪(clip)可以將繪制內(nèi)容限制在一某個區(qū)域中,比如將一個圖片顯示在一個圓或者環(huán)上。
上圖中,A是沒有經(jīng)過任何處理的圖片,直接繪制在視圖上。
//讀取資源文件夾下的圖片"miao.jpg"UIImage *image = [UIImage imageNamed:@"miao.jpg"];//繪制在大小為(100, 100)的矩形區(qū)域,圖片有壓縮現(xiàn)象[image drawInRect:CGRectMake(0, 100, 100, 100)];
B是使用簡單的圓形路徑進行裁剪。
//保存當前圖形上下文的狀態(tài),以免影響其它地方的繪制CGContextSaveGState(cxt);//創(chuàng)建直徑為100的圓形路徑CGPathRef path = CGPathCreateWithEllipseInRect(CGRectMake(100, 100, 100, 100), NULL);CGContextAddPath(cxt, path);//設(shè)置裁剪CGContextClip(cxt);//繪制圖形,只顯示裁剪區(qū)域中的部分[image drawInRect:CGRectMake(100, 100, 100, 100)];//恢復(fù)圖形上下文狀態(tài)CGContextRestoreGState(cxt);
C是使用Bezier曲線進行裁剪。
CGContextSaveGState(cxt);//創(chuàng)建Bezier曲線表示的直徑大的圓UIBezierPath *bPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(200, 100, 100, 100)];//設(shè)置填充規(guī)則為奇偶填充bPath.usesEvenOddFillRule = YES;//給路徑創(chuàng)建直徑小的圓UIBezierPath *bsPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(220, 120, 60, 60)];//將小圓添加到大圓路徑上[bPath appendPath:bsPath];//裁剪,兩個路徑形成一個環(huán)[bPath addClip];//繪制圖像,填充奇偶規(guī)則表示的內(nèi)部,即環(huán)狀[image drawInRect:CGRectMake(200, 100, 100, 100)];CGContextRestoreGState(cxt);
通過裁剪,可以實現(xiàn)類似相框、拼圖的功能,甚至實現(xiàn)擦除(刮獎)效果。但是裁剪的結(jié)果現(xiàn)的比較生硬,并且復(fù)雜路徑的繪制不是很方便。因此我們繼續(xù)考察別的技術(shù)——蒙版(Mask)。蒙版是將一個沒有透明度的灰度圖片覆蓋在已有的圖像上,然后根據(jù)顏色值決定圖像的顯示效果。白色表示全部透過,黑色表示完全不透過,其它是半透明的。而設(shè)計師可以用許多工具制作一些精美的蒙版。
//繪制蒙版圖像- (UIImage *)grayImageWithPoints { CGFloat width = self.bounds.size.width; CGFloat height = self.bounds.size.height; //灰度色彩空間 CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); //沒有alpha通道的bitmap圖像 CGContextRef context = CGBitmapContextCreate(NULL, width, height, 8, width, colorSpace, (CGBitmapInfo)kCGImageAlphaNone); if (context == NULL) { return nil; } //填充黑色 CGContextSetFillColorWithColor(context, [UIColor blackColor].CGColor); CGContextFillRect(context, CGRectMake(0, 0, width, height)); CGContextSaveGState(context);// CGContextSetBlendMode(context, kCGBlendModeLighten);//設(shè)置畫線的屬性 CGContextSetLineWidth(context, 10); CGContextSetStrokeColorWithColor(context, [UIColor colorWithWhite:1 alpha:1.0].CGColor); CGContextSetLineJoin(context, kCGLineJoinRound); CGContextSetLineCap(context, kCGLineCapRound); CGContextAddPath(context, _path); //畫線 CGContextStrokePath(context); CGContextRestoreGState(context); //創(chuàng)建圖像 CGImageRef imageRef = CGBitmapContextCreateImage(context); CGContextRelease(context); UIImage *image = [UIImage imageWithCGImage:imageRef]; CGImageRelease(imageRef); return image;}
使用蒙版進行繪制。
- (void)drawRect:(CGRect)rect { CGContextRef cxt = UIGraphicsGetCurrentContext(); CGContextSaveGState(cxt); //獲取蒙版 UIImage *mask = [self grayImageWithPoints]; if (mask == nil) { CGContextRestoreGState(cxt); return; } //使用蒙版進行裁剪 CGContextClipToMask(cxt, rect, mask.CGImage); //繪制圖像 UIImage *image = [UIImage imageNamed:@"miao.jpg"]; [image drawInRect:rect]; CGContextRestoreGState(cxt);}
ios uidatepicker怎么加蒙版或者遮罩
UIDateicker并沒有繼承UIPickerView,它的寬度只有iphone的寬度,在ipad上直接顯示出來非常不協(xié)調(diào),所以蘋果建議用UIPopoverViewController來顯示,所以你可以在里面任意定制。 在iphone中顯示需要手動配制動畫,因為它只是一個視圖。
iOS(個人筆記)——磨砂蒙版
UIToolbar*toolBar = [[UIToolbaralloc]initWithFrame:CGRectMake(0,0,self.view.bounds.size.width,self.view.bounds.size.height)];
toolBar.barStyle=UIBarStyleDefault;
[self.viewaddSubview:toolBar];
iOS中如果一賬片被蒙版蓋住后,如何透過蒙版看到照片
你先給圖層添加上蒙版,然后再打開你的黑白圖片,ctrl+a全選,ctrl+c復(fù)制,再選中你已添加蒙版的圖層,并單擊一下蒙版,使其處于選中狀態(tài),然后打開通道面板你就會看到一個“蒙版通道”了,選中,并打開前面的眼睛,ctrl+v粘貼剛才復(fù)制的圖片就行了。
本文題目:ios開發(fā)蒙版,ios蒙版圖標
文章網(wǎng)址:http://fisionsoft.com.cn/article/dsidjds.html