簡體   English   中英

如何更改UIImage或UIImageView的一半的alpha值

[英]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];
}

我建議如下:

  1. 創建在視圖中顯示圖像的UIImageView。
  2. 創建一個具有背景顏色和透明度的新UIView:

     UIView *transpView = [UIView new]; tranpsView.alpha = 0.4; transpView.frame = self.view.frame; [self.view addSubview:transpView]; 
  3. 為透明視圖設置動畫以向上滑動:

     [UIView animateWithDuration:1.0 animations:^{ transpView.frame = CGRectOffset(transpView.frame, 0, -tranpsView.frame.size.height); }]; 

完成后不要忘記釋放tranpsView 可能與completed塊。

要獲得“玻璃填充”類型的動畫,只需相應地更改tranpsViewframe 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM