2017-03-03 6 views
0

내보기에 흐림 효과를 추가하려고합니다. 나는 그럼 난과 같이 하위 뷰에 추가뿐만 아니라UITableViewCell에 흐리게 효과가 나타나지 않습니다.

override init(style: UITableViewCellStyle, reuseIdentifier: String?) { 
     super.init(style: .subtitle, reuseIdentifier: reuseIdentifier) 
     let view = tableViewCell 

     addSubview(view) 
     view.addSubview(blurLabel) 

blurLabel.leftAnchor.constraint(equalTo: self.leftAnchor,constant:0).isActive = true 
     //blurLabel.topAnchor.constraint(equalTo: self.topAnchor, constant: 178).isActive = true 
     blurLabel.widthAnchor.constraint(equalToConstant: 375).isActive = true 
     blurLabel.heightAnchor.constraint(equalToConstant: 180).isActive = true 

을 그것으로 제약을 설정하지만 응용 프로그램을 실행할 때이되지 않도록

let blurLabel: UIVisualEffectView = { 
    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark) 
    let blurEffectView = UIVisualEffectView(effect: blurEffect) 


    return blurEffectView 
    }() 

같은 흐림 효과를 만들어 전혀 표시되지 않습니다.

답변

0

편집 : @Hog & @ Fogmeister에서 제안한대로 translatesAutoResizingMaskIntoConstraints = false을 사용하면 명시 적 프레임을 지정하지 않고 자동 레이아웃을 사용하는 더 좋은 해결책이 될 수 있습니다.

이 같은 UIVisualEffectView프레임을을 지정해야합니다 :

let blurLabel: UIVisualEffectView = { 
    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark) 
    let blurEffectView = UIVisualEffectView(effect: blurEffect) 
    blurEffectView.frame = CGRect(x: 0, y: 0, width: 60, height: 40) //give desirable frame 
    return blurEffectView 
}() 
+0

꼭 필요한 것은 아닙니다. 이미 자동 레이아웃을 사용하고 있기 때문에 자동 레이아웃이 너비와 높이를 0으로 지정하지 않도록 흐림보기의'translatesAutoResizingMaskIntoConstraints = false'를 설정할 수 있어야합니다 (프레임으로 초기화하지 않았기 때문에). {0, 0, 0, 0}의 프레임). Arpit은 새로운 프레임을 설정하는 것이 가능하다고 말했지만 명확한 해결책이없는 것은 명시 적 프레임없이 자동 레이아웃을 사용하는 것입니다. – HAS

+1

예, @HAS가 올바른 것입니다. 당신이해야 할 일은'translatesAutoResizingMaskIntoConstraints = false'를 설정하는 것입니다. 오, 그래, 그는 이미 그것을 말했다 : D 조 – Fogmeister

0

당신이 원하는 경우에, 당신은 또한 당신의보기 또는 하위 뷰의에 blurView의의를 제공 할 수 있습니다 대신 명시 적 프레임을주는.

let blurLabel: UIVisualEffectView = { 
    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark) 
    let blurEffectView = UIVisualEffectView(effect: blurEffect)  
    blurEffectView.frame = myMainview.bounds //Blur effect's frame 
    return blurEffectView 
}() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Use it somewhere using 
    self.view.insertSubview(blurEffectView, belowSubview: myAnotherView) 
    // You may also use any of the subviews too, instead of the self.view 
    /// self.myView.insertSubview(blurEffectView, belowSubview: myAnotherView) 
} 
0

이 문제를 해결하려면 자동으로 제약 조건을 만들면됩니다. 이렇게 ...

let blurLabel: UIVisualEffectView = { 
    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark) 
    let blurEffectView = UIVisualEffectView(effect: blurEffect) 
    // this line will stop constraints being added for a zero frame 
    blurEffectView.translatesAutoResizingMaskIntoConstraints = false 
    return blurEffectView 
}()