0
A
回答
1
目前還不清楚您是在討論iOS還是MacOS,但是委託人是一樣的。我能想到的最簡單的方法是用半透明的灰色顏色填充覆蓋視圖,然後用偏移影子衝出來......下面是一個簡單的例子:
- (void)drawRect:(CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSaveGState(ctx);
// Replace with your location, spot radius, and blur radius
CGPoint spotLoc = CGPointMake(200,200);
CGFloat spotRadius = 100;
CGFloat blurRadius = 5;
// Draw 50% black overlay over the entire view
CGContextSetFillColorWithColor(ctx, [[UIColor colorWithRed: 0 green:0 blue:0 alpha:0.5] CGColor]);
CGContextFillRect(ctx, CGContextGetClipBoundingBox(ctx));
// Then punch out spot using an offset shadow
CGRect spotRect = CGRectMake(spotLoc.x - spotRadius, spotLoc.y - spotRadius, 2 * spotRadius, 2 * spotRadius);
CGFloat xOffset = CGRectGetMaxX(spotRect) - CGRectGetMinX(self.bounds);
CGContextSetBlendMode(ctx, kCGBlendModeDestinationOut);
CGContextSetFillColorWithColor(ctx, [[UIColor blackColor] CGColor]);
CGContextSetShadowWithColor(ctx, CGSizeMake(xOffset, 0), blurRadius, [[UIColor blackColor] CGColor]);
CGContextTranslateCTM(ctx, -xOffset, 0);
CGContextFillEllipseInRect(ctx, spotRect);
CGContextRestoreGState(ctx);
}
如果你想硬邊,唐對於偏移和陰影都沒有什麼困擾,只需在將混合模式設置爲kCGBlendModeDestinationOut
後使用CGContextFillEllipseInRect
進行不透明填充。
編輯:它發生在我身上,你也可以做一些類似的徑向漸變效果,但看看你給的效果作爲例子,我猜邊緣更模糊,而不是一個統一的漸變,但這很難說。無論如何,Quartz會爲你提供免費的模糊效果,所以爲什麼不使用它,對嗎?
相關問題
- 1. 使用jQuery/HTML5聚焦燈光效果
- 2. HTML canvas聚光燈效果
- 3. 在actionscript-flash中的聚光燈效果
- 4. wpf中的聚光燈效果
- 5. 如何創建跨瀏覽器兼容的「聚光燈」效果?
- 6. 使用閃光燈影像後效果
- 7. Direct2D - 在direct2d中使用燈光效果
- 8. 創建雙箱陰影效果(如兩個聚光燈)
- 9. Three.js - 閃光燈「環」效果
- 10. 2d SDL的燈光效果
- 11. Magento的無效塊型聚光燈
- 12. HTML網站關燈/燈光效果
- 13. 如何使用HTML5/CSS3或JavaScript添加幻燈片效果和發光效果?
- 14. 如何使用css/html/js製作燈光效果
- 15. WebGL的聚光燈
- 16. OpenGL + GLUT聚光燈
- 17. 用聚光燈詢問
- 18. 使用NSUserActivity或核心聚光燈
- 19. 使用聚光燈搜索關鍵字?
- 20. 如何在mouseover上創建展示圖片部分的聚光燈效果?
- 21. 除了使用閃光燈之外,如何實現發光效果
- 22. 如何查詢,如果閃光燈聚焦
- 23. 如何使用Core Graphics使圖像更亮(使用閃光燈效果更亮)
- 24. 如何改變聚光燈名稱顯示我的結果?
- 25. 如何在Android中的圖像應用效果像扭曲,聚光燈,曝光和更多
- 26. dbpedia聚光燈數據集
- 27. openGL聚光燈問題
- 28. 着眼於聚光燈
- 29. OpenGL聚光燈與Cg
- 30. 變焦和泛在閃光燈效果
看看這個開源項目https://www.cocoacontrols.com/controls/emhint – Groot