     public var rowHeight: CGFloat = .leastNormalMagnitude {
         didSet {
             if existRequiredValues {
-                updateLabelFrame()
+                updateLabelsFrame()
             }
         }
     }

    public var componentsWidthEqual: Bool = true {
        didSet {
            if existRequiredValues {
                updateLabelFrame()
            }
        }
    }
    
    public override init(frame: CGRect) {
        super.init(frame: frame)
        
        self.dataSource = self
        self.delegate = self
    }
    
    public required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        
        self.dataSource = self
        self.delegate = self
    }
    
    var existRequiredValues: Bool {
        return !components.isEmpty && rowHeight != .leastNormalMagnitude
    }
    
    var labels: [UILabel] = []
    
    let separateWidth: CGFloat = 5.0
    
    var separeteCount: Int {
        return components.count - 1

        }
    }
    
    func leftComponentsWidth(withComponentIndex index: Int) -> CGFloat {
        return (0..<index).reduce(0.0) { $0 + componentWidth(of: components[$1]) }
    }
    
    func labelFrame(withComponentIndex index: Int) -> CGRect {
        let component = components[index]
        let x = leftComponentsWidth(withComponentIndex: index)
                + componentSidePadding(of: component)
                + component.maxItemWidth
                + separateWidth * CGFloat(index)
        let y = bounds.height / 2.0 - rowHeight / 2.0
        
        return CGRect(x: x, y: y, width: components[index].labelNameWidth, height: rowHeight)
    }
    
    func setLabels() {
        labels = components.map { component in
            let label = UILabel()
            label.attributedText = component.attributedLabel
            label.textAlignment = .center
