使用形状遮罩隐藏文字Swift [英] Hide text with a shape mask Swift

查看:263
本文介绍了使用形状遮罩隐藏文字Swift的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试在文本上绘制一个三角形,并在与文本相交的地方绘制该形状.

I try to draw a triangle shape over the text, and to have the shape be painted where it intersects the text.

当我尝试使用口罩时,文字只会消失. 这是代码:

When I try to apply the mask, text just disappears. Here's the code:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var messageLabel: UILabel!
    let maskLayer = CAShapeLayer()

    override func viewDidLoad() {
        super.viewDidLoad()

        drawMask()
        messageLabel.layer.mask = maskLayer
    }

    func drawMask(){

        let path = UIBezierPath()

        let xMsgLbl = messageLabel.center.x-80
        let yMsgLbl = messageLabel.center.y-25

        path.moveToPoint(CGPointMake(xMsgLbl,yMsgLbl))
        path.addLineToPoint(CGPointMake(xMsgLbl+80, yMsgLbl+80))
        path.addLineToPoint(CGPointMake(xMsgLbl-80,yMsgLbl+80))
        path.addLineToPoint(CGPointMake(xMsgLbl,yMsgLbl))
        path.closePath()

        maskLayer.fillColor = UIColor.blueColor().CGColor
        maskLayer.path = path.CGPath

        view.layer.addSublayer(maskLayer)


    }
}

推荐答案

所以我弄清楚了如何做到这一点.但这对我来说并不对.必须有一种更好的方式来表达它.

So I figured out how to make this. But it just doesn't feel right to me. There has to be a better way to put it.

我添加了UIView并将其放入文本中,然后将蒙版应用于视图.而且有效.但是为什么它一开始就不起作用.

I've added UIView and put inside it my text, then applied mask to the view. And it worked. But why it didn't work at the first place.

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var textView: UIView!
    @IBOutlet weak var messageLabel: UILabel!

    let maskLayer = CAShapeLayer()
    let path = UIBezierPath()

    override func viewDidLoad() {
        super.viewDidLoad()

        drawMask()

        maskLayer.opacity = 1.0
        view.layer.addSublayer(maskLayer)

        textView.layer.addSublayer(messageLabel.layer)
        messageLabel.layer.position.x = CGFloat(view.layer.position.x)+4

        messageLabel.layer.mask = maskLayer
        messageLabel.layer.masksToBounds = true

        textView.layer.mask = maskLayer
        textView.layer.masksToBounds = true

    }

    func drawMask(){

        let xMin = CGFloat(view.center.x)
        let yMin = CGFloat(view.center.y)-120

        path.moveToPoint(CGPointMake(xMin,yMin))
        path.addLineToPoint(CGPointMake(xMin+80, yMin+120))
        path.addLineToPoint(CGPointMake(xMin-80,yMin+120))
        path.addLineToPoint(CGPointMake(xMin,yMin))
        path.closePath()

        maskLayer.fillColor = UIColor.blackColor().CGColor
        maskLayer.path = path.CGPath

    }
}

这篇关于使用形状遮罩隐藏文字Swift的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆