[英]how change the alpha value of half of UIImage or UIImageView
我正在嘗試創建一個動畫效果,其中開始時alpha值為0.5(大約)的圖像逐漸變為1,但不像傳統效果那樣。 這是我正在尋找的。
原始圖像。
一段時間后
過了一段時間
最后
所以基本上如果圖像的一部分的alpha值可以減少,我可以顯示填充玻璃或接近它的東西的動畫。
我不知道這是否可以完成,或者是否可以使用核心圖形或核心動畫。
PS他們是在photoshop中制作的。
有沒有人對應該采取什么措施來實現這種動畫?
您可以在上方添加視圖並更改其框架。 最好的方法。
如果你正在使用圖像,那么sunclass UIView並實現
-(void) drawRect:(CGRect) rect {
//if you want to clip the image, the frame for the view must be smaller then rect
[image drawInRect: rect];
}
我建議如下:
創建一個具有背景顏色和透明度的新UIView:
UIView *transpView = [UIView new]; tranpsView.alpha = 0.4; transpView.frame = self.view.frame; [self.view addSubview:transpView];
為透明視圖設置動畫以向上滑動:
[UIView animateWithDuration:1.0 animations:^{ transpView.frame = CGRectOffset(transpView.frame, 0, -tranpsView.frame.size.height); }];
完成后不要忘記釋放tranpsView
。 可能與completed
塊。
要獲得“玻璃填充”類型的動畫,只需相應地更改tranpsView
的frame
。 tranpsView
可以是任何UIView子類(如液體或其他東西的紋理)。
希望有所幫助。!
這是另一個想法。
將您的UIView *view
的背景設置為alpha = 0.5所需的image.png
。 讓
w = view.bounds.size.width;
h = view.bounds.size.height;
使用alpha = 0.5創建另一個UIView *glassView
,並將其添加為子視圖:
[view addSubview:glassView];
glassView.frame = CGRectMake(0.0, h, w, 0.0);
創建一個UIImageView *glassImageView
並將其image
設置為image.png
,並將其添加為glassView
的子視圖:
[glassView addSubview:glassImageView];
glassImageView.frame = CGRectMake(0.0, -h, w, h);
現在設置了動畫,以增加高度和α glassView
,同時保持規模imageGlassView
,是這樣的:
[UIView beginAnimations:nil context:NULL]; {
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1.0];
[UIView setAnimationDelegate:self];
glassView.alpha = 1.0;
glassView.frame = CGRectMake(0.0, 0.0, w, h);
glassImageView.frame = CGRectMake(0.0, 0.0, w, h);
} [UIView commitAnimations];
公平地說,我沒有對此進行過測試,但是沿着這些方向的某些東西似乎可能會起作用。 然后,也許不是。 如果您找到了完美的解決方案,請將其發回。 我很想知道怎么做!
嗯,我知道這個問題已經很老了,而且我是那個問過它的人,但是今天我正在嘗試類似的東西,並且發現這個簡單的解決方案來解決我10個月前提出的問題。
我正在開發一個項目,要求圖像看起來像是從完全白色的加載,0%進展到完全紅色圖像,這是100%的進展。
我想添加2個包含圖像的imageViews並將包含圖像的頂部imageview的內容模式設置為底部,這樣當你縮小imageview的大小時,圖像似乎正在加載並且它起作用。 對於一些動畫塊,圖像似乎正在加載。 然后我想到了這個問題,我問了很久,然后提出了解決我自己問題的方法。
所以這個問題的解決方案是,如果你在彼此的頂部添加2個imageViews,然后減少后面的alpha值並將高度降低到零,然后逐漸增加高度並更改圖像視圖的y坐標具有alpha值1然后它似乎按照此問題中的要求加載。
我已經使用這兩個函數來獲得加載圖像的錯覺。
- (void)startAnimation
{
CGRect rect = loadedImageView.frame;
rect.origin.y = unloadedImageView.frame.origin.y;
rect.size.height = unloadedImageView.frame.size.height;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:2.0f];
[UIView setAnimationDidStopSelector:@selector(stopAnimation)];
loadedImageView.frame = rect;
[UIView commitAnimations];
}
- (void)stopAnimation
{
CGRect rect = loadedImageView.frame;
rect.origin.y = unloadedImageView.frame.size.height + unloadedImageView.frame.origin.y;
rect.size.height = 0;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:2.0f];
[UIView setAnimationDidStopSelector:@selector(startAnimation)];
loadedImageView.frame = rect;
[UIView commitAnimations];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.