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 回適用することは良い考えでしょうか?
私のアプローチが完全に間違っている可能性があるため、私が達成しようとしていることに代わるものはありますか。
ありがとう