开发者

Quartz 2D drawing RGB in alpha faded UIView

I've created a custom UIView which overrides the drawRect method using Quartz. I've eventually managed to get everything working exactly how I want it to however there is a really peculiar behaviour which I can't get my head around.

If I use the custom UIView defined as => (@interface TagView : UIView) with it's alpha value set to 1 then it draws exactly as I would expect it to.

The problem I've come across is that in one particular instance I want it to draw 开发者_JS百科at an alpha of 0.3 so I've added the view to IB with an alpha of 0.3. I draw a number of artifacts with different RGB values set using CGContextSetRGBStrokeColor and CGContextSetRGBFillColor. These all work fine until I try and set a non-zero value for all 3 RGB values.

To illustrate if I use: CGContextSetRGBStrokeColor(context, 1, 1, 0, 1); then I get a yellow line. If I use: CGContextSetRGBStrokeColor(context, 1, 1, 0.001, 1); I get nothing at all.

It seems like as long as I set one of the RGB values to 0 it's happy and draws but as soon as all three values are non-zero it fails. Also this is all working fine when the alpha of the view is set to 1.0 (ie I can draw white without any issues whatsoever).

Does anyone have any thoughts or suggestions as to what might be causing this or how I might diagnose the problem?


Garrrrrrr... It seems my mystical ability to post a question on a forum ONLY to work it out myself 30 seconds later has struck again! (of course this is after 2 1/2 days of pulling hair out...).

It seems I had accidentally left the background colour of the view as white. With 0.3 alpha it wasn't actually very obvious. White on white == invisible so i suspect that's why the lines weren't visible. I would have thought that the ALMOST yellow would have shown up but that doesn't seem to be the case.


Try setting the opaque-property of your custom view to NO.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜