How work UIBezierPath in UIScrollView

I set a custom class of UIScrollView, my intention is to show a graph in ScrollView, say for example a heartbeat from time to time start x1 to end x2. But in ScrollView it is shown only the part you can see in the screen base, if I run the view it works well, but the graph does not flow, why ?


class GraphScrollView: UIScrollView {
   
    required init?(coder aDecoder: NSCoder) {
        /
        super.init(coder: aDecoder)
    }
   
   
   
     var startColor: UIColor =  UIColor(red: 0.9, green: 0.2, blue: 0.2, alpha: 0.5)
     var endColor: UIColor = UIColor(red: 0.7, green: 0.3, blue: 0.3, alpha: 0.5)
   
    override func drawRect(var rect: CGRect) {
       
        layer.cornerRadius = 5
        layer.borderColor = UIColor(red: 0.7, green: 0.2, blue: 0.2, alpha: 0.7).CGColor
        layer.borderWidth = 2
       
       
       
        let marginX = CGFloat(10)
        let marginY = CGFloat(10)
        let margin = CGFloat(5 + marginY)
        var arrayDistance:[Double] = []
       
        for var i = 0; i < arrayLocation.count - 1 ; i++ {
            let p1 =  arrayLocation[i]
            let p2 = arrayLocation[i + 1]
            let distance = Location().get_distance(p1, p2: p2)
            arrayDistance.append(distance)
        }
       
        func calculateSum(var lenght:Double)->Double{
            print("arrayDistanceCount= \(arrayDistance.count)")
            for var i = 0; i <= arrayDistance.count - 1; i++ {
               
                lenght += Double(arrayDistance[i])
            }
            return lenght
        }
       
        /
        /
       
       
        /
        let context = UIGraphicsGetCurrentContext()
        let colors = [startColor.CGColor, endColor.CGColor]
       
        /
        let colorSpace = CGColorSpaceCreateDeviceRGB()
       
        /
        let colorLocations:[CGFloat] = [0.0, 1.0]
       
        /
        let gradient = CGGradientCreateWithColors(colorSpace,
            colors,
            colorLocations)
       
        /
        let startPoint = CGPoint.zero
        let endPoint = CGPoint(x:0, y:self.bounds.height)
        CGContextDrawLinearGradient(context,
            gradient,
            startPoint,
            endPoint,
            .DrawsAfterEndLocation)
        CGContextSaveGState(context)
        /
       
        /
       
       
        if graphPoint.count >= 2 {
           
            /
           
            /
            let height = rect.height
           
           
            /
            let maxEle = graphPoint.maxElement()
            /
            let minEle = graphPoint.minElement()
           
            let relativeEleDifferenze = CGFloat(maxEle! - minEle!)
           
            let graphHeight = CGFloat(height)  - margin - 0
           
            let heightYpoint = graphHeight / relativeEleDifferenze
           
            let deltaHeight = CGFloat(maxEle!) * heightYpoint
           
            /
            /
           
            let lenghtXmetri = CGFloat(trackLenght)  * heightYpoint
           
            print("Ymetri = \(heightYpoint), deltaY = \(relativeEleDifferenze) , Xmetri = \(lenghtXmetri)")
           
            let width =   lenghtXmetri
            secondWidth = width
            secondEight = height
           
            contentSize = CGSizeMake(width, bounds.height)
           
           /
           
            let graphPath = UIBezierPath()
               
                /
                let columnXpoint = {
                    (column:Int)-> CGFloat in
                    /
                    let spacer = (width - marginX - 10) / CGFloat((self.graphPoint.count - 1))
                   
                    var x:CGFloat = CGFloat(column) * spacer
                    x += marginX
                    return x
                }
               
                let columnYpoint = {
                    (graphPoint:Double)-> CGFloat in
                    let yPoint = CGFloat(graphPoint) * heightYpoint
                    let y:CGFloat = deltaHeight - yPoint + marginY
                    return y
                }
               
               
                UIColor.whiteColor().setFill()
                UIColor.whiteColor().setStroke()
               
                /
                /
                graphPath.moveToPoint(CGPoint(x: columnXpoint(0), y: columnYpoint(graphPoint[0])))
               
                /
                /
               
                for i in 1..<graphPoint.count {
                    let nexPoint = CGPoint(x: columnXpoint(i), y: columnYpoint(graphPoint[i]))
                    graphPath.addLineToPoint(nexPoint)
                }
               
                /
                graphPath.lineWidth = 2.0
                graphPath.stroke()
               
                /
            /
           
           
           
           
        }


Please help me ?

How work UIBezierPath in UIScrollView
 
 
Q