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 ?