Tag: 面具

UIImage / CGImage的iOS图层蒙版?

我有以下图像: 在一个完全相同的帧大小的UIImageView,我想显示的一切,但红色填充。 let mask = CALayer() mask.contents = clippingImage.CGImage self.myImageView.layer.mask = mask 我认为当作为面具应用时,黑色会显示出来,但是当我设置面具时,整个视野被清除。 这里发生了什么事?

屏蔽除UIView之外的所有视图

我在UITableView中有一个透明的节标题,它应该让单元格在它后面滚动,但显示在tableview而不是单元格后面的背景图像。 我需要一种方法来在截面标题上应用某种剪贴蒙版,这样可以使任何浏览下面的视图变得透明,或者将背景图像的相应部分显示为页眉的背景,并在页眉移动时显示。 我已经看到了这个如何在UITableView透明头下掩盖UITableViewCells ,但它不像广告一样工作,通常是一个糟糕的实现。 我也试过这个: – (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor); CGContextFillRect(context, self.frame); CGContextSetBlendMode(context, kCGBlendModeClear); } 在部分标题的子类中,但是这只是显示黑色背景的视图。 如果你需要更多的解释,这里是我有: View post on imgur.com 这是我想要实现的: View post on imgur.com

改变embedded到button的图像的颜色(Swift3)

我可以通过以下代码将UIButton的图像颜色从黑色更改为白色: extension UIImage { func maskWith(color: UIColor) -> UIImage { UIGraphicsBeginImageContextWithOptions(size, false, scale) let context = UIGraphicsGetCurrentContext()! context.translateBy(x: 0, y: size.height) context.scaleBy(x: 1.0, y: -1.0) context.setBlendMode(.normal) let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height) context.clip(to: rect, mask: cgImage!) color.setFill() context.fill(rect) let newImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() return newImage } } 我使用以下设置UIButton的图像的颜色: //creditCardBtn is […]

反转一个CALayer掩码

我正在尝试使用CALayer与图像作为内容掩盖UIView。 对于面具,我有复杂的PNG图像。 如果我将这个图像作为view.layer.mask应用,我会得到我想要的相反的行为。 有没有办法改变CAlayer? 这是我的代码: layerMask = CALayer() guard let layerMask = layerMask else { return } layerMask.contents = #imageLiteral(resourceName: "mask").cgImage view.layer.mask = layerMask // What I would like to to is view.layer.mask = layerMask.inverse. // <— 我已经看到反向CAShapeLayers和可变path上的几个职位,但没有什么地方可以扭转CALayer。 我所能做的就是在Photoshop中反转图像,以便alpha被倒转,但问题在于我无法创build具有适合所有屏幕大小的确切大小的图像。 我希望这是有道理的。

反转基于笔划的CALayer掩码(不填充)

亲爱的堆栈溢出社区, 我在iOS(Swift)中有一个关于CAShapeLayer的mask属性的问题。 我试图实现的是一个橡皮擦 ,通过掩盖它来擦除部分图像层。 问题出现了,当我尝试颠倒它。 我发现了一些反转path的好方法,但是这些只在使用填充path时才有用。 我想要做的就是画出一条path,用倒置的方式来掩盖图像。 笔画上的线条宽度应该在30.0左右,看起来像橡皮擦。 我尝试了不同的事情。 我目前的版本是这样的: 创build一个包含橡皮擦笔划path的CAShapeLayer 设置图层的fill-color nil 设置stroke-color和line width 添加图层作为图像层的蒙版 这工作正常,但它只是使图像的部分可见,在中风 。 我想扭转它。 我想到了一个黑色和白色的面具,但这是行不通的,因为面具是通过alpha通道传递的。 有没有人有一个想法如何解决这个问题?

UIImage掩盖问题的iOS 7

我大量借用(标准)代码,将UIImage应用于灰度UIImage蒙版。 – (void) maskImage:(UIImage *)image withMask:(UIImage *)maskImage { CGImageRef imageRef = image.CGImage; // main UIImage CGImageRef maskRef = maskImage.CGImage; // grayscale UIImage mask CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), CGImageGetHeight(maskRef), CGImageGetBitsPerComponent(maskRef), CGImageGetBitsPerPixel(maskRef), CGImageGetBytesPerRow(maskRef), CGImageGetDataProvider(maskRef), NULL, false); CGImageRef masked = CGImageCreateWithMask(imageRef, mask); maskedImage = [UIImage imageWithCGImage:masked]; CGImageRelease(mask); CGImageRelease(masked); imageView.image = maskedImage; } 然后我将imageView.image保存到一个文件。 这个代码在iOS 6和6.1中就像一个魅力一样。 保存的图像包含应用蒙版的主UIImage。 不过,我注意到这个代码在iOS 7(iPhone)中不能以相同的方式执行。 […]

堆栈视图ScaleAspectFit掩码在Swift中resize

我在一个堆栈视图中掩盖了一个图像,出于某种奇怪的原因,我的遮罩没有正确地调整图像大小。 这是一个演示,发生了什么事,因为我dynamic地在堆栈视图中添加这个图像的实例,而每个子视图在其边界和间距内被resize。 正如你所看到的,面具保留了图像的原始大小,而不是大小的版本。 我已经尝试了许多不同的宽度和高度的变化,包括bounds.width,layer.frame.width,frame.width,frame.origin.x等,并没有运气。 Swift 2中的当前代码: let testPicture:UIImageView = UIImageView(image: UIImage(named: "myPicture")) testPicture.contentMode = .ScaleAspectFit testPicture.layer.borderWidth = 1 testPicture.clipsToBounds = true testPicture.layer.masksToBounds = true view.layer.addSublayer(shapeLayer) var width = testPicture.layer.frame.width var height = testPicture.layer.frame.height let center = CGPointMake(width/2, height/2) let radius = CGFloat(CGFloat(width) / 2) // Mask let yourCarefullyDrawnPath = UIBezierPath() yourCarefullyDrawnPath.moveToPoint(center) yourCarefullyDrawnPath.addArcWithCenter(center, radius: radius, startAngle: […]

CAShapeLayer遮罩视图

我有一个问题。 我在网上寻找答案,我不明白为什么不工作。 我必须做一些愚蠢的错误,我无法弄清楚。 如果我做: – (void)viewDidLoad { [super viewDidLoad]; UIView * view = [[UIView alloc]initWithFrame:CGRectMake(10, 10, 300, 400)]; view.backgroundColor = [UIColor blueColor]; [self.view addSubview:view]; } 它在屏幕上创build蓝色的视图,但如果我做 – (void)viewDidLoad { [super viewDidLoad]; UIView * view = [[UIView alloc]initWithFrame:CGRectMake(10, 10, 300, 400)]; view.backgroundColor = [UIColor blueColor]; [self.view addSubview:view]; CAShapeLayer * layer = [[CAShapeLayer alloc]init]; layer.frame = CGRectMake(10, […]

如何将边框添加到带有蒙版的圆形图像

这是我的尝试: func round() { let width = bounds.width < bounds.height ? bounds.width : bounds.height let mask = CAShapeLayer() mask.path = UIBezierPath(ovalInRect: CGRectMake(bounds.midX – width / 2, bounds.midY – width / 2, width, width)).CGPath self.layer.mask = mask // add border let frameLayer = CAShapeLayer() frameLayer.path = mask.path frameLayer.lineWidth = 4.0 frameLayer.strokeColor = UIColor.whiteColor().CGColor frameLayer.fillColor = nil […]

掩盖UIView

我一直在我的视图控制器中使用下面的代码: UIView *view = [[CustomView alloc] init]; UIView *mask = [[CustomMask alloc] init]; [view layer].mask =[mask layer]; 它掩盖了我想要的观点。 但是,当它不在视图控制器中时,我得到错误: “要求会员”面具“的东西不是一个结构或工会” 例如,我想在CustomView类本身应用掩码。 所以我会有: UIView *mask = [[CustomMask alloc] init]; [self layer].mask =[mask layer]; 这会产生错误。 如果我在我的AppDelegate类中使用两个图像,我再次得到相同的错误。 任何人都可以解释我怎么能得到我想要的结果。 非常感谢