2014-02-10 11 views
0

我用的是製作的Airbnb應用的今天,我真的很喜歡他們的UX登錄時有人英寸如何模糊了我的UIViewController一些層ontop的(不是代碼,只是概念)

他們有一個正常登錄當你點擊'提交'或任何啓動認證過程時,他們會將黑色圖層放在頂部,半透明並且有旋轉動畫。

描述這個的技術術語是什麼?

他們可能使用了什麼對象?我想給自己一個去,但我只是R & D'ing,所以我不會花時間去做核心低級圖形。只是一個快速的骯髒的概念。

有什麼建議嗎?

回答

0

拍攝您想要模糊的圖像並對圖像應用模糊轉換。然後,將修改後的圖像添加到視圖中,並在頂部放置任何其他視圖。

從技術上講,這將使用Core Image(CIGaussianBlur)完成。

+0

你可以控制放置在視圖上的對象的z索引嗎?所以如果我在我的視圖上有一個Image View對象,我可以隱藏它嗎?然後當我把一個圖像放在它裏面時,使它在視圖中所有其他對象上面(像用戶名/密碼/登錄)? –

+0

您可以控制添加子視圖並重新排列子視圖的位置(如使用'bringSubviewToFront:')... – Wain

2

有現在的UIImage由蘋果公司提供的所謂的UIImage + ImageEffects一個類別,可以加快這些技巧。然後您只需調用其中一種方法來應用效果。然而,在調用之前縮小圖像分辨率總是好的,因爲它需要一些時間來計算。

  • (UIImage *)applyLightEffect;
  • (UIImage *)applyExtraLightEffect;
  • (UIImage *)applyDarkEffect;
  • (UIImage *)applyTintEffectWithColor:(UIColor *)tintColor;

https://github.com/codeschool/UIImage-ImageEffects

https://github.com/iGriever/TWSReleaseNotesView/blob/master/TWSReleaseNotesView/UIImage%2BImageEffects.h

要拍攝的圖像在屏幕上顯示:

UIGraphicsBeginImageContextWithOptions(self.imageView.bounds.size, self.imageView.opaque, 0.0); 
[self.imageView.layer renderInContext:UIGraphicsGetCurrentContext()]; 

UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 

UIImage *blurredImage = [img applyDarkEffect]; 

蘋果對本次會議:WWDC 2013 Session 226: Implementing Engaging UI on iOS,頁面的PDF的40或15:00左右的視頻。他們在那裏詳細解釋它。

+0

非常有趣!我真的很新鮮。你能評論上面的每一行,你正在嘗試做什麼?請? –

+0

我已經添加了第二個鏈接,因爲它似乎是更多版本的類別。您不必縮小或玩UIGraphicsImageContext,但正如我所說的,模糊計算需要一些時間,如果您發送完整的資源圖片需要幾秒鐘的時間。如果您只打算將其顯示在屏幕上,則最好在效果之前將圖像縮小到屏幕分辨率。或者你可以使用上面的代碼來實際讀取從上下文中顯示的圖像currantle,這就像一個暫存器。我將編輯帖子,在其中包含Apple的會話。 –