成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用UIVisualEffectView為視圖添加特殊效果

移動開發 iOS
通常要想創建一個特殊效果(如blur效果),可以創建一個UIVisualEffectView視圖對象,這個對象提供了一種簡單的方式來實現復雜的視覺效果。這個可以把這個對象看作是效果的一個容器,實際的效果會影響到該視圖對象底下的內容,或者是添加到該視圖對象的contentView中的內容。

使用UIVisualEffectView為視圖添加特殊效果

在iOS 8后,蘋果開放了不少創建特效的接口,其中就包括創建毛玻璃(blur)的接口。

通常要想創建一個特殊效果(如blur效果),可以創建一個UIVisualEffectView視圖對象,這個對象提供了一種簡單的方式來實現復雜的視覺效果。這個可以把這個對象看作是效果的一個容器,實際的效果會影響到該視圖對象底下的內容,或者是添加到該視圖對象的contentView中的內容。

我們舉個例子來看看如果使用UIVisualEffectView:

  1. let bgView: UIImageView = UIImageView(image: UIImage(named: "visual")) 
  2. bgView.frame = self.view.bounds 
  3. self.view.addSubview(bgView) 
  4.  
  5. let blurEffect: UIBlurEffect = UIBlurEffect(style: .Light) 
  6. let blurView: UIVisualEffectView = UIVisualEffectView(effect: blurEffect) 
  7. blurView.frame = CGRectMake(50.050.0, self.view.frame.width - 100.0200.0
  8. self.view.addSubview(blurView) 

這段代碼是在當前視圖控制器上添加了一個UIImageView作為背景圖。

我們可以看到UIVisualEffectView還是非常簡單的。需要注意是的,不應該直接添加子視圖到UIVisualEffectView視圖中,而是應該添加到UIVisualEffectView對象的contentView中。

另外,盡量避免將UIVisualEffectView對象的alpha值設置為小于1.0的值,因為創建半透明的視圖會導致系統在離屏渲染時去對UIVisualEffectView對象及所有的相關的子視圖做混合操作。這不但消耗CPU/GPU,也可能會導致許多效果顯示不正確或者根本不顯示。

我們在上面看到,初始化一個UIVisualEffectView對象的方法是UIVisualEffectView(effect: blurEffect),其定義如下:

  1. init(effect effect: UIVisualEffect) 

這個方法的參數是一個UIVisualEffect對象。我們查看官方文檔,可以看到在UIKit中,定義了幾個專門用來創建視覺特效的,它們分別是UIVisualEffect、UIBlurEffect和UIVibrancyEffect。它們的繼承層次如下所示:

  1. NSObject 
  2. | -- UIVisualEffect 
  3. | -- UIBlurEffect 
  4. | -- UIVibrancyEffect 

UIVisualEffect是一個繼承自NSObject的創建視覺效果的基類,然而這個類除了繼承自NSObject的屬性和方法外,沒有提供任何新的屬性和方法。其主要目的是用于初始化UIVisualEffectView,在這個初始化方法中可以傳入UIBlurEffect或者UIVibrancyEffect對象。

一個UIBlurEffect對象用于將blur(毛玻璃)效果應用于UIVisualEffectView視圖下面的內容。如上面的示例所示。不過,這個對象的效果并不影響UIVisualEffectView對象的contentView中的內容。

UIBlurEffect主要定義了三種效果,這些效果由枚舉UIBlurEffectStyle來確定,該枚舉的定義如下:

  1. enum UIBlurEffectStyle : Int { 
  2. case ExtraLight 
  3. case Light 
  4. case Dark 

其主要是根據色調(hue)來確定特效視圖與底部視圖的混合。

與UIBlurEffect不同的是,UIVibrancyEffect主要用于放大和調整UIVisualEffectView視圖下面的內容的顏色,同時讓UIVisualEffectView的contentView中的內容看起來更加生動。通常UIVibrancyEffect對象是與UIBlurEffect一起使用,主要用于處理在UIBlurEffect特效上的一些顯示效果。接上面的代碼,我們看看在blur的視圖上添加一些新的特效,如下代碼所示:

  1. let vibrancyView: UIVisualEffectView = UIVisualEffectView(effect: UIVibrancyEffect(forBlurEffect: blurEffect)) 
  2. vibrancyView.setTranslatesAutoresizingMaskIntoConstraints(false
  3. blurView.contentView.addSubview(vibrancyView) 
  4.  
  5. var label: UILabel = UILabel() 
  6. label.setTranslatesAutoresizingMaskIntoConstraints(false
  7. label.text = "Vibrancy Effect" 
  8. label.font = UIFont(name: "HelveticaNeue-Bold", size: 30
  9. label.textAlignment = .Center 
  10. label.textColor = UIColor.whiteColor() 
  11. vibrancyView.contentView.addSubview(label)

     

vibrancy特效是取決于顏色值的。所有添加到contentView的子視圖都必須實現tintColorDidChange方法并更新自己。需要注意的是,我們使用UIVibrancyEffect(forBlurEffect:)方法創建UIVibrancyEffect時,參數blurEffect必須是我們想加效果的那個blurEffect,否則可能不是我們想要的效果。

另外,UIVibrancyEffect還提供了一個類方法notificationCenterVibrancyEffect,其聲明如下:

class func notificationCenterVibrancyEffect() -> UIVibrancyEffect!

這個方法創建一個用于通知中心的Today擴展的vibrancy特效。

參考

UIVisualEffectView Class Reference

UIVisualEffect Class Reference

UIBlurEffect Class Reference

UIVibrancyEffect Class Reference UIVisualEffect – Swift Tutorial iOS 8: UIVisualEffect

Pointer is missing a nullability type specifier (nonnull or nullable)問題的處理 — Nullability Annotations

責任編輯:chenqingxiang
相關推薦

2009-12-29 14:26:04

WPF按鈕

2009-12-25 14:25:39

WPF圖標

2010-08-24 14:10:44

div style

2010-09-10 09:57:27

DIV樣式

2015-07-07 10:15:56

iOSUIVisualEffweak

2010-08-17 10:16:37

DIV樣式

2021-01-28 14:13:40

CSS3陰影元素

2013-04-25 09:47:54

unity3D手機游戲引擎

2013-07-18 16:09:10

自定義iOS狀態欄iOS開發iOS學習

2022-11-14 08:26:40

系統音頻API

2020-12-20 19:26:20

LVMFedoraLinux

2010-09-01 13:17:42

CSS樣式表

2012-05-15 09:49:32

windows8操作系統

2011-08-18 10:32:13

iPhone編程視圖

2020-06-19 13:53:47

BokehPython繪圖

2010-11-12 11:19:19

SQL Server視

2025-02-04 10:23:56

C#視頻版權

2009-09-22 12:59:58

ibmdwDojo

2016-03-04 10:50:02

ios圓角高效添加

2015-07-31 11:40:36

動效Swift
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人一区二区三区 | 久久久久久黄 | 成人啊啊啊| 日韩久久久久久久 | 天天射美女 | 欧美日韩毛片 | 国产精品视频一区二区三 | 亚洲欧美一区二区三区情侣bbw | 日韩精品在线看 | 一级毛片视频 | 中文字幕一二三区 | 在线观看国产三级 | 日韩在线播放网址 | 亚洲免费一区二区 | 久久久高清| 欧美精品在欧美一区二区 | 免费黄色片在线观看 | 成人一级黄色毛片 | 国产精品伦一区二区三级视频 | 久久精品亚洲欧美日韩久久 | 中文字幕亚洲精品 | 国产亚洲成av人片在线观看桃 | 国产一区二区三区高清 | 国产成人久久精品一区二区三区 | 久久91精品国产一区二区 | 欧美激情黄色 | 国产色片 | 日韩一区和二区 | 亚洲精品一区二区三区 | 三级在线视频 | 日韩视频在线一区 | 精品成人免费一区二区在线播放 | 国产精品区二区三区日本 | 亚洲精色 | 中文字幕成人在线 | 国产免费播放视频 | 国产在线一区二区三区 | 爱综合| 日本精品一区二区三区在线观看视频 | 成人免费观看视频 | 亚洲一区二区三区国产 |