簡體   English   中英

CALayer-在保持遮罩靜態的情況下轉換圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM