8
A
回答
15
假設您的圖像正在視圖中顯示 - 可能是一個UIImageView。然後我們可以通過在該視圖中打一個矩形孔,掩蓋視圖的層。每個視圖都有一個圖層。我們將在這個視圖的圖層上應用一個蒙版,它本身就是一個包含圖像的圖層,我們將在代碼中生成圖像。除了中間的某個明顯的矩形外,圖像將是黑色的。該明確的矩形將在圖像視圖中產生孔。
所以,讓self.iv
成爲這個UIImageView。嘗試運行這樣的代碼:
CGRect r = self.iv.bounds;
CGRect r2 = CGRectMake(20,20,40,40); // adjust this as desired!
UIGraphicsBeginImageContextWithOptions(r.size, NO, 0);
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextAddRect(c, r2);
CGContextAddRect(c, r);
CGContextEOClip(c);
CGContextSetFillColorWithColor(c, [UIColor blackColor].CGColor);
CGContextFillRect(c, r);
UIImage* maskim = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CALayer* mask = [CALayer layer];
mask.frame = r;
mask.contents = (id)maskim.CGImage;
self.iv.layer.mask = mask;
例如,在該圖像中,白方塊不是重疊正方形,它是一個孔,示出了窗口的背景的背後的白色:
編輯:我覺得有義務,因爲我在評論中提到它,以顯示如何用CAShapeLayer做同樣的事情。其結果是完全一樣的:
CGRect r = self.iv.bounds;
CGRect r2 = CGRectMake(20,20,40,40); // adjust this as desired!
CAShapeLayer* lay = [CAShapeLayer layer];
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddRect(path, nil, r2);
CGPathAddRect(path, nil, r);
lay.path = path;
CGPathRelease(path);
lay.fillRule = kCAFillRuleEvenOdd;
self.iv.layer.mask = lay;
5
這裏有一個簡單的斯威夫特功能cut#hole#inView
複製和粘貼爲2017年
func cut(hole: CGRect, inView v: UIView) {
let p:CGMutablePath = CGMutablePath()
p.addRect(inView.bounds)
p.addRect(hole)
let s = CAShapeLayer()
s.path = p
s.fillRule = kCAFillRuleEvenOdd
v.layer.mask = s
}
相關問題
- 1. 在UIView中切透明洞
- 2. 如何將透明洞切割成圖像?
- 3. 如何在UIImage中挖洞?
- 4. 如何逐步透明UIImage?
- 5. 透明UIImage
- 6. UIImage不透明
- 7. 掩蔽和切割透明圖像
- 8. UIImage透明形狀
- 9. 如何用perl切割圖像的透明部分Image :: Magick?
- 10. iOS顏色在UIImage中透明
- 11. 在UIImage中獲取透明像素
- 12. 如何在ios中找到uiimage中的透明區域?
- 13. UIImage帶透明圓角
- 14. wxFrame背景中的透明洞
- 15. 如何在UIImage中創建透明區域?
- 16. 透明的UIImage不是navrar中的透明
- 17. 如何切換不透明到透明背景的子窗口
- 18. CSS透明切片
- 19. 如何使切換按鈕透明
- 20. IE渲染背景:透明的洞?
- 21. 如何將UIImage中的顏色「白色」更改爲透明
- 22. 核心圖形 - 如何從UIImage中裁剪非透明像素?
- 23. 如何掩蓋UIImage,使白色在iPhone上變得透明?
- 24. three.js所透明的平面切割周邊物體的質感
- 25. iOS:與UIActivityViewController共享透明UIImage?
- 26. UIImage底部的透明像素?
- 27. UIImage的透明色爲白色
- 28. UIImage UIToolbar按鈕不完全透明
- 29. 無法確定UIImage不透明屬性
- 30. jQuery切換不透明度
你想切孔在_image_或在顯示它的UIImageView? – matt
看看我在這個代碼中如何在UIImageView(及其圖像)中打出一個圓孔:http://stackoverflow.com/a/8632731/341994你會做同樣的事情,除非你畫一個正方形而不是圈。 – matt
@matt:在實際的UIImageView中切割一個洞實際上是完美的!除了,我不知道如何使用你鏈接的代碼:p什麼是CLayer和CGContextRef? 謝謝! – Phillip