teclado tamaño ocultas ocultar fotos encontrar descargar contraseña con como cambiar aumentar aplicaciones iphone uiview masking

tamaño - como ocultar fotos en iphone con contraseña



Cómo enmascarar una vista (6)

Estoy trabajando en una aplicación donde dibujo un UIView a través de un código y lo lleno con un UIColor. Lo siguiente que quiero es cargar un archivo mask.png (sin transparencias, solo en blanco y negro) y enmascarar la UIView para cambiar su apariencia visual

¿Alguna idea de cómo hacer esto?


Es posible que pueda utilizar CGContextClipToMask:

-(void) drawRect:(CGRect)dirty { CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSaveGState( context ); CGContextClipToMask( context , [self bounds] , [self maskImage] ); [super drawRect:dirty]; // or draw your color manually CGContextRestoreGState( context ); }


Gracias dibujado hacia adelante,

Terminé con esta función:

- (UIImage*) maskImage:(UIView *)image withMask:(UIImage *)maskImage { UIGraphicsBeginImageContext(image.bounds.size); [image.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); CGImageRef maskRef = maskImage.CGImage; CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), CGImageGetHeight(maskRef), CGImageGetBitsPerComponent(maskRef), CGImageGetBitsPerPixel(maskRef), CGImageGetBytesPerRow(maskRef), CGImageGetDataProvider(maskRef), NULL, false); CGImageRef masked = CGImageCreateWithMask([viewImage CGImage], mask); return [UIImage imageWithCGImage:masked]; }


He creado una categoría con el código anterior:

UIView + ImageMask.h:

#import <UIKit/UIKit.h> @interface UIView (ImageMask) - (void) maskWithImage:(UIImage*) mask; - (void) maskWithImage:(UIImage*)mask size:(CGSize)maskSize; - (void) removeMask; @end

UIView + ImageMask.m:

#import <QuartzCore/QuartzCore.h> #import "UIView+ImageMask.h" @implementation UIView (ImageMask) - (void) maskWithImage:(UIImage*) mask { [self maskWithImage:mask size:mask.size]; } - (void) maskWithImage:(UIImage*)mask size:(CGSize)maskSize { CALayer* maskLayer = [CALayer layer]; maskLayer.frame = CGRectMake(0, 0, maskSize.size.width, maskSize.size.height); maskLayer.contents = (__bridge id)[mask CGImage]; // Apply the mask to your uiview layer self.layer.mask = maskLayer; } - (void) removeMask { self.layer.mask = nil; } @end


iOS 8 introduce la propiedad maskView que le permite usar una vista alternativa para proporcionar la imagen de máscara. En Swift:

if let maskImage = UIImage(named: "MaskImage") { myView.maskView = UIImageView(image: maskImage) }

Tenga en cuenta que debe proporcionar una imagen que realmente tenga transparencia; una imagen con partes blancas (para opaco) y partes en negro (para transparentes) no funcionará.


Swift 2.0

Pase un UIImage y una imagen de máscara a esta función, y obtendrá una imagen enmascarada como un UIImage.

func maskImage(image:UIImage, mask:(UIImage))->UIImage{ let imageReference = image.CGImage let maskReference = mask.CGImage let imageMask = CGImageMaskCreate(CGImageGetWidth(maskReference), CGImageGetHeight(maskReference), CGImageGetBitsPerComponent(maskReference), CGImageGetBitsPerPixel(maskReference), CGImageGetBytesPerRow(maskReference), CGImageGetDataProvider(maskReference), nil, true) let maskedReference = CGImageCreateWithMask(imageReference, imageMask) let maskedImage = UIImage(CGImage:maskedReference!) return maskedImage }


// Create your mask layer CALayer* maskLayer = [CALayer layer]; maskLayer.frame = CGRectMake(0,0,yourMaskWidth ,yourMaskHeight); maskLayer.contents = (__bridge id)[[UIImage imageNamed:@"yourMaskImage.png"] CGImage]; // Apply the mask to your uiview layer yourUIView.layer.mask = maskLayer;

Recuerda importar QuartzCore y añadir el framework.

#import <QuartzCore/QuartzCore.h>

¡Es muy fácil pero no encontré la respuesta en ningún lado!