Как реализовать UIVibrancyEffect для заголовка табличного представления?

Я хотел бы, чтобы текст заголовков разделов моего табличного представления отображался в ярком стиле, где базовый интерфейс просвечивает текст. Я попробовал следующее, но ничего не отображается для заголовка, как будто я вернулся 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
}

1 ответ

Решение

Решил это. Единственные проблемы с моим кодом, представленным в вопросе: я должен был установить рамки для представления и метки (duh), и мне нужно было указать стиль эффекта размытия, чтобы .Dark не .Light чтобы текст был светлым, а не темным. Для тех, у кого есть тот же вопрос, вот код. Вы хотите настроить положение / размер / и т.д. текста, я уверен. Обратите внимание, что я уже применил эффект размытия для фона табличного представления.

//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

изображение конечного эффекта

Другие вопросы по тегам