2014-10-04 3 views
1

테이블 뷰 섹션 헤더 텍스트를 기본 UI가 텍스트를 통해 빛나는 역동적 인 스타일로 렌더링하고 싶습니다. 나는 다음을 시도했지만, 마치 nil을 반환 한 것처럼 헤더에 아무 것도 나타나지 않습니다.테이블 뷰 헤더에 UIVibrancyEffect를 구현하는 방법은 무엇입니까?

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 
} 

답변

3

해결되었습니다. 질문에 제공된 내 코드의 유일한 문제점은 뷰 및 레이블 (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 

image of the final effect

관련 문제