2

UIImageViews画面全体を占めるフレームが2 つあり、フレームは(0,0,320,480)です。 imageView2の上にありimageView1ます。

どちらも を使用してマスクが適用されていますCAShapeLayer。関数を作りました

-(void)addMask:(CGRect)rect toView:(UIImageView*)imageView 

これは次のとおりです

//Function
-(void)addMask:(CGRect)rect toView:(UIImageView*)imageView {

CAShapeLayer * shapeLayer = [[CAShapeLayer alloc] init];

CGPathRef path = CGPathCreateWithRect(rect, NULL);
shapeLayer.path = path;
CGPathRelease(path);

imageView.layer.mask=shapeLayer;
imageView.layer.masksToBounds=YES;

}

UIImageViews次をviewDidAppear使用して、マスクを上に適用していますCGRects

//In view did Appear
[self addMask:CGRectMake(0,0,160,480) toView:self.imageView];
[self addMask:CGRectMake(160,0,160,480) toView:self.imageView2];

その結果、画面が半分に分割され、半分imageView1が左側に、半分imageView2が右側に表示されます。

に接続されているボタンがありますIBAction(buttonPressed:)

私が達成したいのは、ボタンが押されたときにマスクのマスクimageView1が増加し、マスクのマスクUIImageView2が減少することです。imageView1左側が画面の 75% を占めimageView2、右側が画面の 25% を占めるようにします。私が今やろうとしていることは以下のコードにありますが、それは望ましい結果を得ていません:

//In IBAction
CGRect tmpRect ;
tmpRect = imageView1.layer.frame;
NSLog(@"Rect1  : %@",NSStringFromCGRect(tmpRect));
tmpRect.size.width+=20.0;
[self addMask:tmpRect toView:self.imageView];

tmpRect= imageView2.layer.frame;
NSLog(@"Rect2 : %@",NSStringFromCGRect(tmpRect));
tmpRect.origin.x+=20.0;
tmpRect.size.width-=20.0;
[self addMask:tmpRect toView:self.imageView2];

出力は

2013-08-26 13:15:41.753 imageMasking[16191:c07] Rect1  : {{0, 0}, {320, 460}}
2013-08-26 13:15:41.754 imageMasking[16191:c07] Rect2 : {{0, 0}, {320, 460}}

Heres私が達成しようとしているものの絵のビューです。

ここに画像の説明を入力

また、後で を使用してマスクを移動したいと思いpanGestureます。この関数を使用して指をドラッグしている間に、マスクを 1000 回適用することは良い考えでしょうか?
私のアプローチが完全に間違っている可能性があるため、私が達成しようとしていることに代わるものはありますか。

ありがとう

4

1 に答える 1