改变UIView的一小部分颜色?

时间:2011-05-12 10:21:24

标签: iphone ios uiview

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

任何形式的帮助都将受到赞赏。

的问候,

姆兰

3 个答案:

答案 0 :(得分: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并在那里设置这些属性)并取消选中'Opaque'。这应该让洞透视。

更新2:我的回答是基于这个答案(信用到期的信用额度):iPhone - Draw transparent rectangle on UIView to reveal view beneath

答案 1 :(得分:0)

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

答案 2 :(得分: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];