2015-08-18 1 views
0

J'essaie de créer un graphique linéaire dessiné à l'aide d'un CGRect que l'utilisateur peut faire défiler. J'ai configuré la vue de son conteneur pour qu'elle défile (je veux un défilement horizontal pour que la ligne puisse dépasser l'écran), mais cela ne semble pas avoir d'effet. Voici le code dans mon contrôleur de vue réelle:UIScrollView contenant le graphique linéaire CGRect ne défilant pas (Swift)

@IBOutlet weak var containerView: UIScrollView! 
@IBOutlet weak var graphView: GraphView! 
override func viewDidLoad() { 
super.viewDidLoad() 
logWeightButton.enabled = false 
logWeightField.delegate = self 
logWeightField.keyboardType = .NumberPad 
self.view.addSubview(containerView) 
containerView.addSubview(graphView) 
containerView.contentSize = graphView.rectDisplay.size 
pageLoad() 
    } 

et est ici le code déclarant la CGRect (dans une classe UIView)

override func drawRect(rect: CGRect) { 
    if dataPoints.count == 0 { 
     return 
    } else { 
     self.drawLine(dataPoints, rect: rect, xCoordinates: nil, color: UIColor.blackColor()) 
     if xCoordinates.count != 0 { 
      self.drawLine(actualPoints, rect: rect, xCoordinates: xCoordinates, color: UIColor.redColor()) 
     } 
     rectDisplay = rect 
    } 
} 

Répondre

0

cernées que je avais besoin pour éteindre automatiquement la mise en page dans le story-board Inspecteur de fichiers - s'il n'est pas désactivé, il peut écraser les vues de défilement.

J'ai aussi fait en sorte de permettre à défilement avec

containerView.scrollEnabled = true 

et définir le cadre de containerView à

self.view.frame 

Je n'ai pas assez réputation pour poster une image, si elle est ici:

http://i.stack.imgur.com/ZOBJp.png

Le graphique défile maintenant, mais tout mon d isplay est un gâchis (je crois en raison du réglage de la taille du conteneur à la taille de la vue), donc le cycle continue.

MISE A JOUR FINAL:

appris que le cadre de la vue de défilement doit être plus petit que son contenu pour faire défiler (ce qui explique pourquoi la mise au cadre de la vue a travaillé - la largeur de la vue était moins la largeur du graphique linéaire), donc j'ai mis mon cadre à

containerView.frame = CGRect(x: 43.0, y: 147.0, width: 300.0, height: 117.0) 

Et tout fonctionne maintenant. J'espère que c'est utile pour quelqu'un d'autre!