2011-05-12 90 views
2

我有一个UIView,它的颜色是黑色,不透明度是0.9或类似的东西。我想要做的是用黑色部分填充UIView,但指定的矩形区域不应变黑。即该特定的矩形区域保持清晰的颜色...更改UIView一小部分的颜色?

任何形式的帮助将不胜感激。

问候,

伊姆兰

回答

5

你也可以继承UIView和覆盖- (void)drawRect:(CGRect)rect

,做以下(未经测试的东西,但使用类似的东西);

- (void)drawRect:(CGRect)rect { 

// fill the whole UIView with a color 
[[UIColor colorWithRed:1 green:1 blue:1 0.9] setFill]; 
UIRectFill(rect); 

// draw a rect 
CGRect rectIntersection = CGRectIntersection(theRectIWantToDrawIn, rect); 

[[UIColor clearColor] setFill]; 
UIRectFill(rectIntersection); 
} 

上述代码绘制与它在某个位置的模拟clearColor孔黑色图。当然,你可以根据自己的喜好改变这种行为。

这是相当快的。

更新:请注意,我设置了UIView,我想绘制矩形到UIClear颜色(我将它添加到xib并在那里设置这些属性)并取消选中“不透明”。这应该让洞看透。

更新2:我的答案是基于这个答案(信贷,信贷是由于):iPhone - Draw transparent rectangle on UIView to reveal view beneath

+0

好极了!这是有点我想要的:)从来不知道一个交叉矩形...但我有一个问题..上述代码确实给了我一个洞在主视图...但我应该有的部分清晰的颜色(即内部矩形);如果我使用'clearColor',它会返回里面的黑色。不完全是我所预期的,因为我必须有清晰的颜色才能让用户窥视背景视图......任何想法? – Imran 2011-05-12 11:16:20

+0

我想我忘了提及你必须在视图上设置一些属性。更新了我之前的回答。 – Jake 2011-05-12 11:32:05

+0

这个技巧:)非常感谢! – Imran 2011-05-12 11:46:37

0

添加其他视图(子视图)到该区域。并将其设置为您想要的颜色。这就是您当前需求的简单解决方案。 或者你可以使用一些石英芯的功能。

0

您可以创建由自定义的主视图小UIView并设置背景色清

UIView *View1 = [[UIView alloc] initWithFrame:CGRectMake(128.0f, 50.0f, 34.0f, 34.0f)]; 
[View1 setBackgroundColor:[UIColor clearColor]];   
[self.view addSubview:View1]; 
[View1 release];