added iOS source code
[wl-app.git] / iOS / Pods / SideMenu / Pod / Classes / UITableViewVibrantCell.swift
1 //
2 //  UITableViewVibrantCell.swift
3 //  Pods
4 //
5 //  Created by Jon Kent on 1/14/16.
6 //
7 //
8
9 import UIKit
10
11 open class UITableViewVibrantCell: UITableViewCell {
12     
13     fileprivate var vibrancyView:UIVisualEffectView = UIVisualEffectView()
14     fileprivate var vibrancySelectedBackgroundView:UIVisualEffectView = UIVisualEffectView()
15     fileprivate var defaultSelectedBackgroundView:UIView?
16     open var blurEffectStyle: UIBlurEffectStyle? {
17         didSet {
18             updateBlur()
19         }
20     }
21     
22     // For registering with UITableView without subclassing otherwise dequeuing instance of the cell causes an exception
23     public override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
24         super.init(style: style, reuseIdentifier: reuseIdentifier)
25     }
26     
27     required public init?(coder aDecoder: NSCoder) {
28         super.init(coder: aDecoder)
29         
30         vibrancyView.frame = bounds
31         vibrancyView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
32         for view in subviews {
33             vibrancyView.contentView.addSubview(view)
34         }
35         addSubview(vibrancyView)
36         
37         let blurSelectionEffect = UIBlurEffect(style: .light)
38         vibrancySelectedBackgroundView.effect = blurSelectionEffect
39         defaultSelectedBackgroundView = selectedBackgroundView
40         
41         updateBlur()
42     }
43     
44     internal func updateBlur() {
45         // shouldn't be needed but backgroundColor is set to white on iPad:
46         backgroundColor = UIColor.clear
47         
48         if let blurEffectStyle = blurEffectStyle, !UIAccessibilityIsReduceTransparencyEnabled() {
49             let blurEffect = UIBlurEffect(style: blurEffectStyle)
50             vibrancyView.effect = UIVibrancyEffect(blurEffect: blurEffect)
51             
52             if selectedBackgroundView != nil && selectedBackgroundView != vibrancySelectedBackgroundView {
53                 vibrancySelectedBackgroundView.contentView.addSubview(selectedBackgroundView!)
54                 selectedBackgroundView = vibrancySelectedBackgroundView
55             }
56         } else {
57             vibrancyView.effect = nil
58             selectedBackgroundView = defaultSelectedBackgroundView
59         }
60     }
61 }