如何使完全透明视图上的绘图可见

Posted

技术标签:

【中文标题】如何使完全透明视图上的绘图可见【英文标题】:How to make Drawing on Fully Transparent View Visible 【发布时间】:2012-03-13 07:31:08 【问题描述】:

我正在使用 Quartz 进行绘图,因为在自定义 UIView 中说“Paint”

我有控制器视图“viewC”

我做到了

[self.view addSubView:somePaintInstance]; in my viewC at some event

现在当我在绘画或绘画时,Paint 的默认背景是“黑色”。

我想在我的“viewC”视图之上进行全透明绘画/绘图

原来如此

somePaintInstance.alpha=0.5; (before adding it as subview) 

但这也使我的绘图/绘画与油漆的背景透明,所以如果我让它完全透明 (alpha = 0.0),我无法在油漆的视图中看到绘图本身

我尝试过但没有工作:

somePaintInstance.setbackgroundcolor somePaintInstance.opaque

网络上的其他答案也不适用于这种实现

我在这里查看了 rob 的答案: How to add a transparent gradient mask to a context

但仍然不清楚我该如何实现我想要的?

如果需要,请告诉我其他详细信息

问候,

【问题讨论】:

我也想知道如何完成上面的。 【参考方案1】:

我尝试设置 alpha 值为 0 的背景或使用 StartTransparentLayer。这些都不起作用。 对我有用的是将视图不透明属性设置为 NO。 在我的视图的初始化程序中,我输入了以下代码:

-(id)initWithFrame:(CGRect)frame 
  if (self = [super initWithFrame:frame]) 
        // set default values
        self.colorNormal = [UIHelper ricolaYellow];
        self.colorActice = [UIColor colorWithHexString:CIRCLE_COLOR_ACTIVE];
        self.capacities = nil;
        self.opaque = NO;
    
    return self;

【讨论】:

【参考方案2】:

这条线应该可以工作,

somePaintInstance.backGroundColor = [UIColor clearColor];

【讨论】:

backGroundColor 属性在这种情况下根本不起作用,无论我把它放在哪里,我都觉得需要一些 Quartz 特定的函数调用,这将允许背景上下文同时完全透明在它上面绘图(上下文)不会。 alpha = 1.0 用于什么(上下文)?你能详细说明一下吗 @user300940。好的。试试这个,CGContextClearRect(context, viewRect); 已经尝试过 ClearRect 将清除整个上下文而不是我想要的 ClearRect 所做的只是“相反”,使我的绘图“清晰”(不可见)并且默认背景“黑色”仍然存在

以上是关于如何使完全透明视图上的绘图可见的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 应用程序中,如何使用透明文本制作线性视图,以便父视图可见?

如何使 UIButton 不可见,但如果按下仍然可以工作?

滚动时如何使透明导航栏可见

Mac 上的 SwiftUI:帮助文本即使在不透明度为零的视图中也始终可见

UIView z-index 透明度

如何使角垫表中的排序箭头始终可见?