我可以使用CGContextDrawRadialGradient
來製作一個球體,它會將一個alpha褪色到UIColor.clearColor
並且它可以工作。CGContextDrawRadialGradient對於非圓形發光
不過,我試圖做這種類型的事情:
雖然把一些戰略性領域的周圍,使一個有趣的效果(類似戰略要地的LED背光),我會愛獲得真正的光芒。 如何在drawRect
的圓角矩形周圍繪製光暈?
我可以使用CGContextDrawRadialGradient
來製作一個球體,它會將一個alpha褪色到UIColor.clearColor
並且它可以工作。CGContextDrawRadialGradient對於非圓形發光
不過,我試圖做這種類型的事情:
雖然把一些戰略性領域的周圍,使一個有趣的效果(類似戰略要地的LED背光),我會愛獲得真正的光芒。 如何在drawRect
的圓角矩形周圍繪製光暈?
您可以使用CGContextSetShadowWithColor
在任何路徑周圍創建發光效果,但是您無法精確控制外觀。特別是,默認的陰影是相當輕:
而且我知道只有這樣才能使它更暗的超過自身再次繪製:
不是最優的,但它近似於你想要的東西。通過以下drawRect
產生
這些圖像:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGMutablePathRef path = CGPathCreateMutable();
int padding = 20;
CGPathMoveToPoint(path, NULL, padding, padding);
CGPathAddLineToPoint(path, NULL, rect.size.width - padding, rect.size.height/2);
CGPathAddLineToPoint(path, NULL, padding, rect.size.height - padding);
CGContextSetShadowWithColor(context, CGSizeZero, 20, UIColor.redColor.CGColor);
CGContextSetFillColorWithColor(context, UIColor.blueColor.CGColor);
CGContextAddPath(context, path);
CGContextFillPath(context);
// CGContextAddPath(context, path);
// CGContextFillPath(context);
CGPathRelease(path);
}
有一點要記住的是,呈現模糊的陰影是相當昂貴的,這可能會或可能不會取決於你的觀點如何往往是一個問題重繪。如果陰影不需要製作動畫,請考慮將它們渲染爲UIImage
一次,並僅在UIImageView
中顯示結果。
你認爲它比2色漸變更昂貴嗎?我的猜測是它會是相似的。 – 2012-04-09 22:48:28
如果你正在繪製徑向漸變,它可能比任意路徑的陰影更便宜,但是如果你想出了一種方法來繪製與陰影相同形狀的漸變,那麼它可能完全相同。只有測試會告訴你! – 2012-04-09 22:52:19
我會把它放在「測試」bin中,它很大,很少被清空(除非有性能或內存問題)。再次感謝 – 2012-04-09 22:56:00
會有一個彩色陰影足夠嗎? – 2012-04-09 22:10:01
@IanHenry不是真的,因爲它會突然結束而不是逐漸變成alphaing。我意識到我可以做幾個不同阿爾法的「戒指」,但我正在尋找一些不太冒險的東西。 – 2012-04-09 22:11:06
陰影的模糊可以在'CGContextSetShadowWithColor'中更改;它允許你做一些與你所顯示的圖像非常相似的東西(儘管你沒有精確地控制陰影漸變)。 – 2012-04-09 22:15:25