[英]CALayer - Translating an image while keeping the mask static
我有一個CALayer,其中包含圖像並在其頂部具有蒙版。
CALayer * firstLayer = [CALayer層];
firstLayer.backgroundColor = [UIColor clearColor].CGColor; firstLayer.frame = curveView.frame; firstLayer.position = CGPointMake(curveView.frame.origin.x + 100, curveView.frame.origin.y + 100); firstLayer.name = @"FirstLayer"; [self.view.layer addSublayer:firstLayer]; CALayer *firstImageLayer = [CALayer layer]; firstImageLayer.frame = firstLayer.bounds; firstImageLayer.masksToBounds = NO; firstImageLayer.name = @"FirstImageLayer"; firstImageLayer.contents = (id)first.CGImage; [firstLayer addSublayer:firstImageLayer];
firstImageLayer.mask = [cM setMaskOnLayer:firstImageLayer:@“ FirstColor”:&error];
我想平移/平移/拖動基礎層中包含的圖像,同時保持蒙版固定。 (有點像從固定窗口中查看圖像)
for (CALayer *subLayer in firstLayer.sublayers) {
// p is the touch coordinate
/*First Thing I tried*/
CAShapeLayer *mask = (CAShapeLayer *)subLayer.mask;
mask.position = p;
/*Moves the mask, not the image*/
/*My second approach*/
subLayer.frame = CGRectMake(subLayer.frame.origin.x + p.x, subLayer.frame.origin.y+p.y, subLayer.frame.size.width, subLayer.frame.size.height);
/*Moves the entire thing… image+mask - both*/
/*Final desperate approach*/
for (CALayer *subLayer2 in subLayer.sublayers)
{
sublayer2.position = p;
}
/*Nothing happens*/
}
幫我。
您是否嘗試過將ImageLayer的逆變換應用於MaskLayer?
CALayer* imageLayer = ...;
CALayer* maskLayer = ...;
CGAffineTransform inverse = CGAffineTransformInvert(imageLayer.affineTransform);
maskLayer.affineTransfrom = inverse; //assign everytime imageLayer move or change
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.