2013-08-26 63 views
2

我有两个UIImageViews占据整个屏幕的含义,它们的框架是:(0,0,320,480)imageView2是对imageView1顶部。通过UIView改变MaskedLayer的大小

他们都有应用他们使用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; 

} 

我使用以下CGRects应用口罩在UIImageViewsviewDidAppear

//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:)的按钮。

我想达到什么是时按下按钮,而中UIImageView2遮光罩,减少了imageView1的面膜增加:使imageView1在左边,而imageView2右侧occupty 25占据屏幕的75%屏幕的百分比。我试图现在要做的是在下面的代码,但是这是没有得到预期的效果:

//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}} 

继承人什么我米试图实现图片视图。

enter image description here

而且后来我想用panGesture移动的面具。因此,在使用此功能拖动手指的同时,应用蒙版一千次是不错的主意?
除了我想要达到的目标之外,还有别的选择,因为我的方法可能完全错误。

感谢

回答

2

的问题是,在你按下按钮,你总是会layer.frame这是图像视图的全画幅,不是说你是掩盖当前帧。您应该将分割线的位置(如CGFloat)存储在属性中,并且如果您想要修改遮罩,请首先更新此属性,然后使用它来计算新的遮罩路径。

你不应该担心性能,直到你有一个理由。即使用/测试告诉你,你需要做出改变。然后,您应该找出导致问题的原因,然后开展工作。

这就是说,你应该不需要每次都创建一个新的形状图层,只需更新的路径。

+0

谢谢Wain。 那是什么我想 所以展望未来,我将有几个rects,而不仅仅是一个单一的线不会足够了。 所以现在我正在制作一个NSMutableArray的rects,如 _rects = [NSArray arrayWithObjects:@“{{0,0},{160,460}}”,“{{160,0},{160,460 }}“,nil]; 转换CGRectFromString以使用实际的矩形。 谢谢 Waris –