簡體   English   中英

如何在 Xcode 中設置 UITableView 部分的標題漸變(和透明)背景?

[英]How can I set UITableView's section's header gradient (and transparent) background in Xcode?

我以多種方式嘗試過,但不幸的是我無法做到。 迄今為止最好的是這條評論

我認為解決方案應該在函數func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) ,但我不知道該怎么做。

我想獲得像這樣 我使用 Swift 5+,目標 iOS 可以是任何東西(13+)。

1. 使用 ViewForHeaderInSection 如下:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let headerView = self.getGradientBackgroundView()

    // Add any title to the Header if needed
    let label = UILabel()
    label.frame = CGRect.init(x: 5, y: 5, width: headerView.frame.width-10, height: headerView.frame.height-10)
    label.text = "My header"
    headerView.addSubview(label)

    return headerView
}

2. 使用 heightForHeaderInSection 設置標題的高度:

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 50 //whatever height you needed.
    }

3.獲取漸變BG Header View

  private func getGradientBackgroundView() -> UIView {
    let gradientBackgroundView = UIView()

    // Prepare Gradient Layer
    let gradientLayer = CAGradientLayer()
    gradientLayer.frame.size = CGSize(width: self.myTableView.frame.size.width, height: 50) // height same as in heightForHeaderInSection
    gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.5)
    gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.5)
    gradientLayer.colors = [UIColor.blue.cgColor, UIColor.green.cgColor]
    // Add layer to view
    gradientBackgroundView.layer.addSublayer(gradientLayer)
    return gradientBackgroundView
  }

希望這可以幫助!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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