如何在 iOS Swift 應用中為背景檢視應用漸變?


在 iOS 中,有一個名為 CAGradientLayer 的類可以將漸變顏色應用於檢視。在本文中,我們將瞭解如何使用 CAGradientLayer 類將漸變應用於 iOS 中檢視的背景。CAGradientLayer 類提供了不同的屬性,例如顏色、位置、點、框架等。我們將使用它們將漸變應用於檢視。最後,我們將使用 insertSublayer 方法將漸變層新增到父檢視。

要將漸變應用於 iOS Swift 應用的背景檢視,您可以按照以下步驟操作:

步驟 1 - 建立一個新的漸變層

let gradientLayer = CAGradientLayer()

使用 CAGradientLayer,您可以輕鬆建立物件以將漸變應用於背景

步驟 2 - 設定漸變層的顏色和位置:

gradientLayer.colors = [UIColor.blue.cgColor, UIColor.red.cgColor]
gradientLayer.locations = [0.0, 1.0]

CAGradientLayer 提供了一些屬性,用於使用約束控制繪圖。可以將 UIColor 型別的陣列傳遞給“colors”屬性。您可以根據需要指定多個顏色。

另一個名為“location”的屬性提供了繪製漸變顏色的位置。漸變位置也可以使用數字陣列定義。漸變位置的範圍將為 0 到 1。根據您的需要,您可以將位置劃分為 N 個數字。

步驟 3 - 設定漸變層的起始點和結束點

gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
gradientLayer.endPoint = CGPoint(x: 1.0, y: 1.0)

起始點和結束點定義漸變的方向。在本例中,我們將起始點設定為檢視的左上角 (0.0, 0.0),並將結束點設定為檢視的右下角 (1.0, 1.0),因此漸變將從左上角到右下角。

步驟 4 - 將框架設定為圖層

gradientLayer.frame = view.frame

為了使漸變可見,您必須提供其框架。

步驟 5 - 將漸變層作為子層新增到背景檢視

view.layer.insertSublayer(gradientLayer, at: 0)

insertSublayer(_:at:) 方法是 iOS 中 CALayer 類的**一個方法**。它用於在指定索引處將子層新增到父層。

當您在父層上執行此方法時,提供的子層將在指定索引處作為子層插入。如果索引大於或等於現有子層的數量,則新的子層將附加到子層陣列的末尾。

以下是將漸變應用於檢視的完整程式碼片段

示例

import UIKit
class TestController: UIViewController {
    
   override func viewDidLoad() {
      super.viewDidLoad()
      initialSetup()
   }
       
   private func initialSetup() {

      // basic setup
      view.backgroundColor = .white
      navigationItem.title = "Gradient View"

      // Create a new gradient layer
      let gradientLayer = CAGradientLayer()
      // Set the colors and locations for the gradient layer
      gradientLayer.colors = [UIColor.blue.cgColor, UIColor.red.cgColor]
      gradientLayer.locations = [0.0, 1.0]

      // Set the start and end points for the gradient layer
      gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
      gradientLayer.endPoint = CGPoint(x: 1.0, y: 1.0)

      // Set the frame to the layer
      gradientLayer.frame = view.frame

      // Add the gradient layer as a sublayer to the background view
      view.layer.insertSublayer(gradientLayer, at: 0)
   }
}

輸出

如您所見,在本例中,漸變層已應用於控制器的檢視。它從檢視的左上角到右下角對角線放置。我們使用 colors 屬性應用漸變顏色。

以下是如何應用多個顏色的另一個示例

示例

import UIKit
class TestController: UIViewController {
    
   override func viewDidLoad() {
      super.viewDidLoad()
      initialSetup()
   }
       
   private func initialSetup() {

      // basic setup
      view.backgroundColor = .white
      navigationItem.title = "Gradient View"

      // Create a new gradient layer
      let gradientLayer = CAGradientLayer()
      // Set the colors and locations for the gradient layer
      gradientLayer.colors = [UIColor.green.cgColor, UIColor.yellow.cgColor, UIColor.red.cgColor]
      gradientLayer.locations = [0.0, 0.5, 1.0]

      // Set the start and end points for the gradient layer
      gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
      gradientLayer.endPoint = CGPoint(x: 0.0, y: 1.0)

      // Set the frame to the layer
      gradientLayer.frame = view.frame

      // Add the gradient layer as a sublayer to the background view
      view.layer.insertSublayer(gradientLayer, at: 0)
   }
}

輸出

在上面的示例中,您可以看到我們應用了三種不同的顏色和自定義位置。在本例中,我們正在從上到下應用線性漸變。

推薦方法

例如,您必須在 iOS 應用中將漸變應用於多個檢視。為了最大程度地減少程式碼重複,始終建議建立 UIView 的擴充套件。以下是如何建立擴充套件的示例:

extension UIView {
   func addGradient(_ colors: [UIColor], locations: [NSNumber], frame: CGRect = .zero) {

      // Create a new gradient layer
      let gradientLayer = CAGradientLayer()
      
      // Set the colors and locations for the gradient layer
      gradientLayer.colors = colors.map{ $0.cgColor }
      gradientLayer.locations = locations

      // Set the start and end points for the gradient layer
      gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
      gradientLayer.endPoint = CGPoint(x: 0.0, y: 1.0)

      // Set the frame to the layer
      gradientLayer.frame = frame

      // Add the gradient layer as a sublayer to the background view
      layer.insertSublayer(gradientLayer, at: 0)
   }
}

以下是如何使用上述擴充套件的程式碼

view.addGradient([UIColor.green, UIColor.yellow, UIColor.red], locations: [0.0, 0.5, 1.0],frame: view.frame)

結論

要將漸變新增到 iOS Swift 專案的背景檢視,請使用 Core Animation 的 CAGradientLayer 類。您可以執行以下基本操作:

  • CAGradientLayer 用於建立一個新的漸變層 ()。

  • 使用 colors 和 locations 屬性自定義漸變層的顏色和位置。

  • startPoint 和 endPoint 屬性用於提供漸變層的起始位置和結束位置。

  • startPoint 和 endPoint 屬性用於提供漸變層的起始位置和結束位置。

更新於:2023年3月27日

9K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告