Skip to main content
 首页 » 操作系统

ios之如何为 TableView 标题实现 UIVibrancyEffect

2024年01月01日36telwanggs

我希望我的 TableView 部分标题文本以充满活力的样式呈现,其中底层 UI 会通过文本闪耀。我尝试了以下方法,但标题没有出现,就好像我返回了 nil 一样。

override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
    //Add vibrancy text effect 
    let blurEffect = UIBlurEffect(style: .Light) 
    let vibrancyEffect = UIVibrancyEffect(forBlurEffect: blurEffect) 
    let vibrancyEffectView = UIVisualEffectView(effect: vibrancyEffect) 
 
    //Label for vibrant text 
    let vibrantLabel = UILabel() 
    vibrantLabel.text = "testing" 
    vibrantLabel.font = UIFont.systemFontOfSize(11.0) 
    vibrantLabel.textColor = UIColor(white: 0.64, alpha: 1) 
    vibrancyEffectView.contentView.addSubview(vibrantLabel) 
 
    return vibrancyEffectView 
} 

请您参考如下方法:

解决了。我在问题中提供的代码的唯一问题是:我必须为 View 和标签设置框架(duh),并且我需要将模糊效果样式指定为 .Dark 而不是 .Light 以确保文本是浅色而不是深色。对于有相同问题的任何人,这是代码。我确定您会想要调整文本的位置/大小/等。请注意,我已经为表格 View 的背景应用了模糊效果。

//Create vibrancy text effect 
let blurEffect = UIBlurEffect(style: .dark) 
let vibrancyEffect = UIVibrancyEffect(blurEffect: blurEffect) 
let vibrancyEffectView = UIVisualEffectView(effect: vibrancyEffect) 
vibrancyEffectView.frame = CGRect(x: 0, y: 0, width: tableView.bounds.size.width, height: 40) 
vibrancyEffectView.autoresizingMask = .flexibleWidth 
 
//Create header label 
let vibrantLabel = UILabel() 
vibrantLabel.frame = vibrancyEffectView.frame 
vibrantLabel.autoresizingMask = .flexibleWidth 
vibrantLabel.text = "testing" 
vibrantLabel.font = UIFont.systemFont(ofSize: 16) 
vibrantLabel.textColor = UIColor(white: 0.64, alpha: 1) 
 
vibrancyEffectView.contentView.addSubview(vibrantLabel) 
return vibrancyEffectView