Đây là một phiên bản tóm tắt của một chương từ iOS 8,qua bài hướng dẫn đã ra mắt một phần buổi lễ của iOS8 để đưa đến bạn đọc một bản xem trước bên trong cuốn sách. Chúng tôi hi vọng bạn sẽ thích!

Một trong những thay đổi đáng kể nhất là ứng dụng làm mờ độ sáng trong iOS 7, đáng chú ý nhất trong notification center và control center, như hình minh họa dưới đây:

alt

Tuy nhiên, khi các nhà phát triển đã được giao nhiệm vụ là thêm các hiệu ứng làm mờ tương tự như các ứng dụng riêng của họ, thì họ vướng phải 1 rào cản nghiêm trọng. Apple đã quyết định rằng các giới hạn của các thiết bị có sẵn tại thời điểm hiện tại chỉ đơn giản là không đủ năng lượng để hỗ trợ thời gian thực của hiệu ứng làm mờ trong các ứng dụng của bên thứ ba, các nhà phát triển tuyên bố sẽ sử dụng quá nhiều hiệu ứng làm mờ dẫn đến các ứng dụng chậm hơn với nhiều sự suy thoái của trải nghiệm người dùng Rất nhiều các giải pháp này đã làm việc khá tốt. Tuy nhiên, iOS 8 đã chính thức thêm nó vào phát triển - và bạn sẽ ngạc nhiên như thế nào khi dễ dàng sử dụng các hiệu ứng làm mờ mới.

Clear Facts on Blurs

Thực hiện hiệu ứng làm mờ phải thẩm mỹ và hiệu quả - cần một chút khéo léo. Trong phần này bạn sẽ tìm hiểu về một phương pháp làm mờ phổ biến và làm thế nào bạn có thể sử dụng hiệu ứng làm mờ để cải thiện trải nghiệm người dùng về ứng dụng của bạn.

How Blurs Work

Tất cả các hiệu ứng làm mờ đều bắt đầu với một bức ảnh.Để đạt được một vệt mờ, bạn phải áp dụng một hiệu ứng làm mờ đến mỗi điểm trong ảnh.Kết quả của ảnh sau đó là một bức ảnh mờ hơn so với ảnh gốc. Có nhiều hiệu ứng làm mờ phức tạp và khác nhau, nhưng bạn sẽ sử dụng một hiệu ứng làm mờ phổ biến nhất được biết đến như hiệu ứng Gaussian trong dự án này.

Hiệu ứng làm mờ thường kiểm tra đến từng điểm của một hình ảnh và sử dụng các điểm ảnh xung quanh để tính toán các giá trị màu sắc mới cho điểm đó. Ví dụ, hãy xem xét các lưới hình lý thuyết sau đây:

alt

Mỗi phần trong lưới trên đại diện cho một điểm ảnh riêng biệt, và mỗi điểm ảnh có giá trị từ 1 đến 10.Hãy xem xét trường hợp nơi mà các hiệu ứng được đánh giá điểm trung tâm của ảnh. Hiệu ứng trung bình các giá trị của các điểm ảnh xung quanh và chèn giá trị trung bình này vào điểm trung tâm ảnh, kết quả là lưới điểm mới sau đây:

alt

Bạn có thể lặp lại quy trình này với mọi điểm ảnh trong ảnh gốc Hiệu ứng mẫu trên chỉ kiểm tra trực tiếp một điểm trong mỗi hướngđể tạo ra các giá trị trung bình mới. Bạn có thể tăng độ mờ này hơn nữa để tăng độ mờ trong hình ảnh của bạn. Như ảnh minh họa dưới đây:

alt

Chú ý: Thông thường, độ làm mờ của bạn càng lớn, thì quá trình xử lý càng lâu hơn bạn sẽ yêu cầu để xử lý hình ảnh. iOS giảm tải tốt nhất các hoạt động xử lý hình ảnh cho GPU để giữ mermory cho chủ đề chính

Blur Design Strategies

Con người có xu hướng chú ý đến các yếu tố cái mà được tập trung và bỏ qua những thứ không được chú ý đến. Tin hay không, đây là một hệ quả tự nhiên của đôi mắt chúng ta quan sát như thế nào? Tập trung vào một đối tượng khi nó di chuyển gần hơn hoặc xa hơn từ đôi mắt được biết đến như là sự điều tiết thị lực; đó là những gì giúp bạn cảm nhận được độ sâu và khoảng cách của các đối tượng xung quanh bạn.

Các nhà thiết kế ứng dụng khai thác thực tế này và làm mờ các yếu tố không quan trọng trên màn hình để hướng sự chú ý của người dùng đến các yếu tố không bị mờ còn lại, như thể hiện trong ảnh minh họa chụp màn hình này của khách hàng phổ biến Twitter Tweetbot :

alt

Trong nền giao diện của người dùng là khó nhận ra trong hình trên. Điều đó cung cấp nhận thức theo ngữ cảnhcho người dùng về nơi họ đang ở trong hệ thống định vị. Ví dụ, bạn mong muốn trở về giao diện mờ dần trong nền trước khi bạn chọn một trong các tài khoản đã hiển thị.

Chú ý: Hãy cẩn thận về việc lạm dụng hiệu ứng làm mờ trong các ứng dụng điện thoại di động của bạn. Mặc dù làm mờ có thể cung cấp hiệu ứng tầm nhìn tuyệt vời, , Mọi người có thể mất tập trung và khó chịu nếu sử dụng không thích hợp hoặc quá thường xuyên.

Thực hiện theo các tiêu chuẩn thiết kế để sử dụng làm mờ trực tiếp hướng sự chú ý của người dùng đến những thứ quan trọng cho dù bạn sẽ ít khi làm sai. Xem các thiết kế dành cho iOS phần của tài liệu hướng dẫn giao diện ngươi dungcủa iOS đã tìm thấy trên trung tâm phát triển iOS của Apple để biết thêm.

Các ứng dụng sẽ hiển thị một thư viện các câu chuyện cổ tích cho người sử dụng; khi người dùng chọn vào một câu chuyện cổ tích, các ứng dụng giới thiệu những câu chuyện đầy đủ trên màn hình. Người dùng có thể tùy chỉnh phông chữ hiển thị, liên kết văn bản, hoặc ngay cả những màu sắc chủ đề cho đọc sách ban ngày hoặc ban đêm.

Bắt đầu bằng cách tải về các dự án khởi động , sau đó mở Grimm.xcodeproj trong Xcode. MởGrimm.storyboard và hãy nhìn vào các bộ điều khiển xem có trong đó có chứa các ứng dụng như minh họa dưới đây:

alt

Bạn có thể bỏ qua controller đầu tiên trong hình ở trên vì nó chỉ đơn giản là điều khiển chuyển hướng thư mục gốc của ứng dụng. Lấy mỗi bộ điều khiển xem đánh số lần lượt, bạn sẽ thấy như sau:

  1. controller đầu tiên là một StoryListController , nó hiển thị một danh sách của tất cả các câu chuyện cổ tích trong cơ sở dữ liệu.

  2. Khi bạn chạm chọn vào một câu chuyện trong danh sách bạn sẽ đến chi tiết này StoryViewController ,nó hiển thị tiêu đề và nội dung của câu chuyện cổ tích đã chọn.

  3. Đây là một OptionsController được chứa bên trong StoryViewController và hiển thị các phông chữ có sẵn, liên kết văn bản, và các tùy chọn màu sắc. Để hiển thị nó đơn giản chỉ cần chạm vào biểu tượng thiết lập trong bộ điều khiển chi tiết.

build and run. Bạn sẽ thấy màn hình ban đầu như hình dưới đây:

alt

Có một vài khám phá thú vị trong ứng dụng; chọn câu chuyện khác nhau, hãy nhấp vào biểu tượng dấu ba chấm và vuốt nhẹ đến phông chữ khác nhau và phương thức đọc để hiểu các user interface function như thế nào?

Chú ý: Bạn có thể sử dụng bất cứ giả lập nào hoặc thiết bị iOS 8 để chạy ứng dụng này, ngoại trừ iPad 2. Apple vô hiệu hóa nhiều khả năng của iPad 2 để hiển thị hiệu ứng làm mờ vì lý do hiệu suất. Các ứng dụng sẽ vẫn làm việc trên iPad 2; Tuy nhiên, bạn sẽ không thể nhìn thấy bất kỳ tác dụng làm mờ gọn gàng.

Một khi bạn đã nắm được cách sử dụng ứng dụng, hãy đi thẳng tới phần tiếp theo để biết làm thế nào để áp dụng hiệu ứng làm mờ cho các ứng dụng.

Manual Blur Techniques

alt

Đừng băn khoăn - hạng mục trong dự án này đã được sử dụng bởi hàng trăm ứng dụng và là cực kỳ vững chắc. Nó là cầu nối vào tất cả các tập tin Swift của bạn bằng cách sử Swift Grimm-Bridging-Header.h vì không có cần phải viết lại nó cho Swift.

chú ý: Swift đã được thiết kế để có khả năng với Objective-C, do đó các nhà phát triển, bao gồm cả các nhà phát triển của Apple, có thể bắt đầu thêm lập trình Swift cho các dự án của họ mà không cần tái cấu trúc.Headers Bridging cho phép bạn bao gồm Objective-C với các tập tin Swift của bạn.

Để có một cái nhìn tại các hạng mục trong câu hỏi, mở Grimm\Categories\UIImage+ImageEffects.m từ Project Explorer và đọc lướt qua tất cả các comment trong code cho đến khi bạn tìm thấy applyBlurWithRadius:tintColor:saturationDeltaFactor:maskImage:.

Hướng dẫn này sẽ không bao gồm tất cả các đầu vào và đầu ra của đoạn mã này, nhưng nó sẽ giúp bạn hiểu một số chức năng cơ bản chứa bên trong. Apple cung cấp loại UIImage này với việc phát hành iOS 7 để chứng minh làm thế nào để áp dụng blur tĩnh cho hình ảnh. Nó lợi dụng các Accelerate.framework để đơn giản hóa vector và ma trận toán học và được tối ưu hóa cho xử lý hình ảnh.

có bán kính mờ, mặt phẳng bão hòa và một hình ảnh mặt nạ tùy chọn và sử dụng rất nhiều thuật toán để tạo một hình ảnh mới.

Obtaining a Snapshot Image

Bạn sẽ cần một hình ảnh chụp trước khi bạn có thể áp dụng hiệu ứng mờ của bạn. Trọng tâm của bạn lúc này ( chơi chữ) sẽ là lựa chọn điểm vẽ ở dưới cùng xem trong StoryViewController

Mở StoryViewController.swiftvà tìm kiếm setOptionsHidden Bạn sẽ chụp một ảnh chụp màn hình của toàn bộ StoryViewController.swift, làm mờ nó, và sau đó thiết lập nó như là một subview của xem tùy chọn. Thêm các chức năng sau đây trên setOptionsHidden :

func updateBlur() {
  // 1
  optionsContainerView.hidden = true
  // 2
  UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, true, 1)
  // 3
  self.view.drawViewHierarchyInRect(self.view.bounds, afterScreenUpdates: true)
  // 4
  let screenshot = UIGraphicsGetImageFromCurrentImageContext()
  UIGraphicsEndImageContext()
}

Kết quả mỗi bình luận đánh số lần lượt là:

  1. Bạn không muốn một ảnh chụp màn hình của các tùy chọn nếu họ đang ở trên màn hình để đảm bảo rằng chúng được ẩn trước khi bạn đưa ảnh chụp màn hình.
  2. Để vẽ một ảnh chụp màn hình bạn cần phải tạo ra một bối cảnh hình ảnh mới.Vì bạn sẽ làm mờ hình ảnh dù sao, bạn không cần phải đầy đủ độ phân giải hình ảnh võng mạc.Điều này tiết kiệm việc xử lý tài nguyên.
  3. Vẽ story view vào bối cảnh hình ảnh. Vì bạn đã ẩn các tùy chọn ContainerView, bạn sẽ cần phải chờ cập nhật màn hình trước khi chụp ảnh màn hình.
  4. Kéo một UIImage từ bối cảnh hình ảnh và sau đó xóa sạch nó.

Bạn sẽ cần phải gọi cập nhật Blur, khi bạn nhấn vào Iconellipsis. Tìm các method setOptionsHidden: và thêm đoạn code sau vào đầu trang của các chức năng:

if !hidden {
  updateBlur()
}

Trước khi đi xa hơn, bạn nên kiểm tra xem bạn đang chụp ảnh chụp màn hình bạn nghĩ rằng bạn đang chụp.

Thêm một breakpoint vào dòng UIGraphicsEndImageContext (), bạn thêm vào updateBlur trong bước trước.Sau đó xây dựng và chạy project của bạn và bấm vào bất kỳ cái gì để chọn nó.

Một khi được hiển thị, hãy nhấp vào biểu tượng dấu ba chấm để kích hoạt các breakpoint. Trong phần biến của Debugging Editor, mở rộng biến ảnh chụp màn hình và chọn lồng Một số biến, như hình dưới đây: alt

Nhấn phím Space để mở Quick Look; bạn sẽ thấy một ảnh chụp màn hình không Retina của xem câu chuyện của bạn, như bạn có thể thấy ở đây:

alt

Chú ý là không có bất kỳ yếu tố chuyển hướng từ UINavigationController của bạn; đó là vì xem câu chuyện là một subview của UINavigationController, do đó các điều khiển chuyển hướng bên ngoài của khu vực ảnh chụp màn hình. Bây giờ bạn chắc chắn rằng bạn đang nắm lấy các ảnh chụp màn hình chính xác, bạn có thể tiếp tục và áp dụng blur sử dụng thể loại UIImage mô tả trước đó.

Blurring Your Snapshot

làm việc trong StoryViewController.swift, tìm bản cập nhật Blur chức năng bạn thêm và thêm dòng ngay dưới UIGraphicsEndImageContext ():

let blur = screenshot.applyLightEffect()

Tiếp theo, di chuyển breakpoint của bạn vào dòng bạn vừa thêm, như vậy:

alt

Build và run. Nhấp vào bất kỳ faire tale, sau đó nhấp vào iconellipsis trong navigation bar. Từ trong Debugging Editor, tìm các biến mờ và nhấn phím space để mở Quick Look lần nữa.

Bạn không nhìn thấy bất cứ cái gì vì breakpoint của bạn là ngay trên đường mà bộ biến và Xcode ngừng thực hiện ngay trước khi nó thực hiện dòng đó.

Để thực thi các dòng tô đậm code, nhấn phím F6 hoặc click vào nút Step hơn như hình dưới đây:

alt

Displaying the Blur in Your View

Mở StoryViewController.swift và thêm các thuộc tính sau đây để trên cùng của tập tin cùng với thuộc tính khác:

var blurView = UIImageView()

Điều này sẽ khởi tạo một UIImageView mới với mỗi trường hợp StoryViewController. Tìm viewDidLoad và thêm đoạn code sau vào cuối của method:

optionsContainerView.subviews[0].insertSubview(blurView, atIndex:0)

Grimm.storyboard đặt Tùy chọn điều khiển bên trong một cái nhìn chứa hiển thị mỗi khi người dùng chạm vào ellipsis icon.Vì bạn không có quyền truy cập trực tiếp đến xem Tùy chọn điều khiển, bạn cần phải nhận được subview đầu tiên của container.Trong trường hợp này, đó sẽ xảy ra là xem thuộc sở hữu của OptionsController. Cuối cùng, bạn chèn blurView như một subview để dưới cùng của xem stack, bên dưới tất cả subviews khác.

Tuy nhiên bên trong StoryViewController.swift, quay trở lại để cập nhật Blur và thêm đoạn code sau vào cuối của hàm:

blurView.frame = optionsContainerView.bounds
blurView.image = blur

optionsContainerView.hidden = false

Kể từ blurView không được thiết lập trong Storyboard, nó sẽ có một khung của CGRectZero trừ khi bạn thiết lập các khung hình bằng tay. Đồng thời, bạn thiết lập thuộc tính hình ảnh với hình ảnh mờ mà bạn đã tạo ra. Cũng nên nhớ rằng bạn đã giấu tùy chọn ContainerView trước khi chụp ảnh chụp màn hình.Bạn cần phải chắc chắn rằng bạn ẩn những điểm này trước khi phương pháp này kết thúc.

Vô hiệu hoá các breakpoint bạn thiết lập trước đó, sau đó build và run. Sau khi chọn một fairy tale và hiển thị các tùy chọn, nhìn mờ trong tất cả ánh sáng của nó, như hình dưới đây:

alt

Hmm. mờ phải không? Tại sao nó không phù hợp với các văn bản đằng sau nó?

Theo mặc định, UIImageView thay đổi kích thước hình ảnh để phù hợp với khung hình. Điều đó có nghĩa là hình ảnh mờ rất lớn đang được nổ thành nhỏ hơn nhiều tùy chọn xem. Đó sẽ không làm!

Để khắc phục điều này, bạn cần phải thiết lập thuộc tính ImageView contentMode một cái gì đó khác hơn so với mặc định UIViewContentModeScaleToFill. Thêm các dòng sau để cập nhật Blur, ngay bên dưới nơi bạn thiết lập các hình mờ vào blurView:

blurView.contentMode = .Bottom

Các contentmode UIViewContentMode.Bottom buộc hình ảnh để giữ lại kích thước của nó và thay vào đó sửa thành bottom-center của UIImageView.

Build and run. Làm thế nào để vị trí làm mờ nhìn ngay?

alt

Chỉ có một điều nữa bạn cần làm trước khi mờ trạng thái của bạn đã sẵn sàng để sử dụng. Hãy thử thay đổi định hướng của thiết bị hoặc giả lập (⌘-Left / Right Arrow) của bạn. Quan điểm là không thay đổi kích thước!

Vì bạn đang sử dụng tính năng tự động sắp xế với tất cả các văn bản của bạn, ảnh chụp màn hình sẽ không có sẵn nữa. Bạn sẽ cần phải thực hiện một ảnh chụp màn hình mới sau khi xoay thiết bị và cập nhật các blurView .

Để làm điều này, thêm chức năng ghi đè sau bên StoryViewController.swift :

override func viewWillTransitionToSize(size: CGSize,
  withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
  // 1
  coordinator.animateAlongsideTransition(nil, completion: { context in
    // 2
    self.updateBlur()
  })
}
  1. Các phương pháp animateAlongsideTransition cung cấp cho bạn khả năng để làm thay đổi sinh động cùng với sự thay đổi định hướng cũng như làm một số ngẫu nhiên sau khi quay xong. Bạn chỉ sử dụng block hoàn thành kể từ khi bạn cần khung của optionsViewController sau khi thay đổi luân phiên.
  2. Cài đặt lại các blur sau khi các hình ảnh động định hướng hoàn tất. Điều này sẽ sử dụng cách sắp xếp văn bản mới.

Thiết lập và chạy thử sự thay đổi định hướng để nhìn thấy tất cả mọi thứ được thay đổi kích cỡ với một hiệu ứng làm mờ mới.

c

Làm Mờ có kích thước chính xác, nhưng nó không phảiđiều thú vị. Di chuyển các văn bản đằng sau các vệt mờ và bạn sẽ nhận thấy sự làm mờ không được cập nhật.

Bạn chắc chắn có thể làm tốt hơn thế. iOS 8 cung cấp cho bạn những công cụ để tạo ra hiệu ứng mờ theo thời gian thực tác động trong các ứng dụng của bạn - đó là một chặng đường dài từ các giải pháp phát triển-dẫn từ giải pháp của iOS 7!

Các hiệu ứng làm mờ trong iOS8

iOS 8 cung cấp cho bạn toàn bộ một bộ các hiệu ứng goodies; UIBlurEffect , một lớp con củaUIVisualEffect , đặc biệt có liên quan đến sở thíchcủa bạn. UIBlurEffect cung cấp làm mờ tốt mà bạn nhìn thấy trong các thanh menu, trung tâm thông báo, Trung tâm Quản lý - và bạn có thể sử dụng nó trong ứng dụng của bạn là tốt.

Adding a UIBlurEffect

Mở StoryViewController.swift và tìm setOptionsHidden: . Thảo luận ra các cuộc gọi đến updateBlur bên trong nếu-tuyên bố bạn xây dựng lên ở các phần trước; sau đó nó sẽ giống như hình bên dưới:

alt

Trong khi bạn đang ở đó, bạn nên đảm bảo blurView không được thêm vào ở tất cả các cảnh. TrongviewDidLoad , bình luận ra các dòng sau:

optionsContainerView.subviews[0].insertSubview(blurView,
	              atIndex:0)

Chú ý: Thay vì xóa tất cả các mã bạn thêm vào trước đó, bạn chỉ cần đưa ra ý kiến về nó để bạn có thể quay lại và thấy sự khác biệt. Nếu bạn không quan tâm đến việc giữ lại các mã làm mờ thủ công của bạn, bạn có thể xóa các mã thay vì đưa ra ý kiến về nó

Build and run. kiểm tra xem mọi thứ tích hợp và tình trạng làm mờ của bạn đã thỏa mãn chưa

Mở Grimm.storyboard và tìm các tùy chọn điều khiển Scene . Chọn giao diện, mở thuộc tính Inspector và thay đổi của điểm nhìn của hình nền để Xóa màu , như hình dưới đây:

alt

Mở OptionsController.swift và thêm đoạn mã sau vào viewDidLoad , ngay sau dòng, nơi bạn thêmoptionsView để xem:

// 1
let blurEffect = UIBlurEffect(style: .Light)
// 2
let blurView = UIVisualEffectView(effect: blurEffect)
// 3
blurView.setTranslatesAutoresizingMaskIntoConstraints(false)
view.insertSubview(blurView, atIndex: 0)
  1. Tạo một UIBlurEffect với một UIBlurEffectStyle.Light phong cách. Điều này xác định đó có hiệu ứng sử dụng. Các kiểu có sẵn khác là UIBlurEffectStyle.ExtraLight và UIBlurEffectStyle.Dark .
  2. Tạo một UIVisualEffectView và nói với nó mà ảnh hưởng đến sử dụng. Lớp này là một lớp con của UIView; Mục đích duy nhất của nó là xác định và hiển thị hiệu ứng hình ảnh phức tạp.
  3. Vô hiệu hóa dịch tự động thay đổi kích thước tương phản trên blurView , như bạn sẽ tự thêm sụ tương phản chỉ trong một khoảnh khắc, và thêm nó ở dưới cùng của ngăn xem. Nếu bạn chỉ cần thêmblurView trên đầu trang của xem, nó sẽ kết thúc mờ tất cả các điều khiển bên dưới nó thay!

Bây giờ bạn cần phải đảm bảo blurView của bạn đưa ra đúng với phần còn lại của view. Vẫn làm việc trong viewDidLoad, thêm đoạn mã dưới đây addConstraints:: trước dòng nơi mà bạn gọi đến:

constraints.append(NSLayoutConstraint(item: blurView,
  attribute: .Height, relatedBy: .Equal, toItem: view,
  attribute: .Height, multiplier: 1, constant: 0))
constraints.append(NSLayoutConstraint(item: blurView,
  attribute: .Width, relatedBy: .Equal, toItem: view,
  attribute: .Width, multiplier: 1, constant: 0))

Những constraints này giữ khung của blurView , phù hợp với các OptionsController xem.

Build and run. Chọn một câu chuyện cổ tích, và sau đó di chuyển văn bản. như các bản cập nhật làm mờ trong thời gian thực.

alt

Adding Vibrancy to your Blur

Làm mờ các hiệu ứng là tuyệt vời - nhưng như thường lệ, Apple đã đưa nó đến cấp độ tiếp theo với UIVibrancyEffect , mà khi được sử dụng kết hợp với UIVisualEffectView điều chỉnh màu sắc của nội dung để làm cho nó cảm thấy sống động hơn.

Hình ảnh dưới đây cho thấy sự sống động làm cho nhãn hiệu và biểu tượng bật tắt màn hình của bạn, trong khi đồng thời pha trộn với các nền chính nó:

alt

Phía bên trái của hình ảnh cho thấy một nhãn hiệu và nút bình thường, trong khi phía bên phải cho thấy một nhãn hiệu và nút động đã được áp dụng.

Chú ý: UIVibrancyEffect phải được thêm vào một UIVisualEffectView đó đã được thiết lập và cấu hình với một đối tượng UIBlurEffect ; nếu không, sẽ không có bất kỳ hiệu ứng làmmờ nàođể áp dụng một hiệu ứng động!

Mở OptionsController.swift và thêm đoạn mã sau vào viewDidLoad , chỉ cần trước khi mà những hạn chế Auto Layout được thêm vào:

// 1
let vibrancyEffect = UIVibrancyEffect(forBlurEffect: blurEffect)
// 2
let vibrancyView = UIVisualEffectView(effect: vibrancyEffect)
vibrancyView.setTranslatesAutoresizingMaskIntoConstraints(false)
// 3
vibrancyView.contentView.addSubview(optionsView)
// 4
blurView.contentView.addSubview(vibrancyView)
  1. Tạo một UIVibrancyEffect có sử dụng blurEffect bạn đã thiết lập trước đó. UIVibrancyEffect là một lớp con của UIVisualEffect .
  2. Tạo một UIVisualEffectView để chứa các hiệu ứng động. Quá trình này chính xác là giống như việc tạo ra một vệt mờ. Vì bạn đang sử dụng Auto Layout, bạn hãy chắc chắn để tắt các bản dịch tự động thay đổi kích thước ở đây.
  3. Thêm optionsView để xem đọ động của bạn contentView ; điều này đảm bảo hiệu ứng động sẽ được áp dụng cho các điểm có chứa tất cả các điều khiển.
  4. Cuối cùng, bạn thêm độ động để xem điểm mờ của contentView để hoàn thành có hiệu ứng

Thêm những hạn chế khác sau đây, vào cuối viewDidLoad :

constraints.append(NSLayoutConstraint(item: vibrancyView,
  attribute: .Height, relatedBy: .Equal,
  toItem: view, attribute: .Height,
  multiplier: 1, constant: 0))
constraints.append(NSLayoutConstraint(item: vibrancyView,
  attribute: .Width, relatedBy: .Equal,
  toItem: view, attribute: .Width,
  multiplier: 1, constant: 0)
```)

Build and run. đến  xem tùy chọn để xem hiệu ứng động mới của bạn trong khi thực hiện:

![alt](http://www.raywenderlich.com/wp-content/uploads/2014/09/effect1.png)

Trừ khi bạn có cái nhìn tương phản cao, hiệu ứng sống động làm cho nó thực sự khó khăn để đọc nhãn hiệu và điều khiển. Những gì sẽ xảy ra?
Ah - nội dung phía sau làm mờ là màu trắng và bạn đang áp dụng hiệu ứng UIBlurEffectStyle.Light . Đó là phản tác dụng, để đảm bảo.
Sửa đổi các dòng gần đầu viewDidLoad mà khởi tạo các blurEffect :

```ObjectiveC
let blurEffect = UIBlurEffect(style: .Dark)

và kết quả đây

alt

bài dịch từ nguồn

https://www.raywenderlich.com/84043/ios-8-visual-effects-tutorial