2013-06-30 20 views
1

考慮2個視圖;不透明的(灰色)覆蓋了圖形。我想得到一個效果,例如,如果一臺電腦以某種速度沿着一條路徑滑行,並將不透明的顏色變爲透明,揭開底層的圖形視圖(請參閱圖像)。UIView的Erazor效應

我能想出的唯一方法是擁有相當多的小視圖,而不是不透明視圖,併爲這些視圖設置動畫效果。但這似乎是愚蠢而沉重的解決方案。

我從來沒有與CoreGraphics和CoreAnimation任何經驗,並閱讀關於這些文檔可能會混淆爲noob。所以即時通訊問,如果有人可以給我一個微調,閱讀什麼和在哪裏挖。任何幫助表示讚賞。

enter image description here

+0

你想讓橡皮擦沿着預定義的路徑(「CGPath」或「UIBezierPath」)移動,還是遵循用戶的觸摸? –

+0

@robmayoff,無用戶觸摸,預定義 – user1244109

回答

3

最簡單的解決方案就是轉過頭來思考。不要想象抹去灰色來揭示圖像。想象一下,在灰色的頂部繪製圖像。

您這樣做的方式是將灰色視圖放在圖像視圖後面,並且使用CAShapeLayer作爲圖像視圖的圖層蒙版。將您的「橡皮擦」路徑設置爲形狀圖層的path。將形狀圖層的lineWidth設置爲您喜歡的任何寬度。將其fillColor設置爲[UIColor whiteColor].CGColor

如果你這樣做,你會看到沿着路徑的圖像和其他地方的灰色。

要爲「橡皮擦」的運動設置動畫,請在形狀圖層中添加一個CABasicAnimation。將形狀圖層的strokeEnd屬性從@0.0f動畫到@1.0f

+0

這太棒了!感謝你的分享。不知道我是否可以簡單地將它取而代之,但它是一個很好的開始。再次感謝。 – user1244109

+0

爲什麼不會畫出寬闊的白線?它將如何顯示圖像? –

+1

@SteveWaddicor閱讀關於[「核心動畫編程指南*」中的「屏蔽屬性」](http://developer.apple.com/library/ios/DOCUMENTATION/Cocoa/Conceptual/CoreAnimation_guide/LayerStyleProperties/LayerStyleProperties.html#// apple_ref/DOC/UID/TP40004514-CH10-SW21)。 –

2

只需用灰色視圖繪製[的UIColor clearColor];無論這種透明色如何出現,它都會顯示底層視圖。

您必須先設置灰色爲opaque = NO的視圖。這不會讓灰色視圖看不見,這只是暗示iOS有透明的部分。

+0

謝謝!不認爲這會起作用。會嘗試。 – user1244109