【问题标题】:Changing color of small portion of UIView?改变 UIView 的一小部分的颜色?
【发布时间】:2011-08-24 00:14:09
【问题描述】:

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

我们将不胜感激。

问候,

伊姆兰

【问题讨论】:

    标签: iphone ios uiview


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您可以在主视图中自定义创建一个小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];
      

      【讨论】:

        【解决方案3】:

        您可以继承 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

        【讨论】:

        • 太棒了!这在某种程度上是我想要的:) 从来不知道交叉点矩形......但我有一个问题......上面的代码确实在主视图中给了我一个洞......但是我应该拥有的部分清除颜色(即内部矩形);如果我使用“clearColor”,它会在内部返回黑色。与我预期的不太一样,因为我必须有清晰的颜色才能让用户看到背景视图..有什么想法吗?
        • 我想我忘了提到你必须在视图上设置一些属性。更新了我之前的答案。
        猜你喜欢
        • 2022-10-16
        • 2020-01-25
        • 2016-11-18
        • 1970-01-01
        • 2016-08-08
        • 2012-11-03
        • 2011-09-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多