2017-07-08 13 views
1

私はUIimageを使用してマスクの周りに境界線を作成しようとしています。私はコード内でマスクを作成するとき、それは正常に見える:カスタムマスクの周りにストロークを作成する方法は?

@IBOutlet weak var imageToBeMasked: UIImageView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    let mask = UIImageView(image: Image) 
    imageToBeMasked.mask = mask 
} 

mask

しかし、私は試してみて、周りのストロークを作成するとき、全くのマスクを使用しないように表示されます。

@IBOutlet weak var imageToBeMasked: UIImageView! 

    override func viewDidLoad() { 
    super.viewDidLoad() 

    let mask = UIImageView(image: Image) 

    // the layer used to mask the image view 
    let maskLayer = CAShapeLayer() 
    maskLayer.path = UIBezierPath(rect: mask.bounds).cgPath 
    imageToBeMasked.layer.mask = maskLayer 

    // the layer used to draw the border 
    let strokeLayer = CAShapeLayer() 
    strokeLayer.frame = imageToBeMasked.bounds 
    strokeLayer.fillColor = UIColor.clear.cgColor 
    strokeLayer.path = UIBezierPath(rect: mask.bounds).cgPath 
    strokeLayer.strokeColor = UIColor.black.cgColor 
    strokeLayer.lineWidth = 4 
    imageToBeMasked.layer.addSublayer(strokeLayer) 
} 

stroke

この問題を解決する手掛かりはありますか?

答えて

0

CALayerは、マスク自体の影響を受けません。最速の方法は、元の画像より少し大きい新しい画像を作成し、元の画像の後ろに置き、色で色合いを変えることです。

let templateImage = originalImage.withRenderingMode(.alwaysTemplate) 
strokeImageView.image = templateImage 
strokeImageView.tintColor = .black 
+0

いいえ、私はマスクのアニメーションを計画しています – SwiftyJD

+0

おっと、私はストロークのアニメーションを計画しています – SwiftyJD

関連する問題