2015-03-29 1 views
0

Je suis dans les premières étapes de la création d'un tableau simple. Cependant, j'ai de la difficulté à dessiner la forme par programmation.forme de dessin rapide de la classe dans un autre viewcontroller (par programmation)

J'ai essayé un tas de variations de ceci:

let donutChart = CounterView(frame = CGRectMake(100, 100, 100, 100)) 
cellView.addSubview(donutChart) 

Il n'y a pas d'erreurs, mais pour les 2 derniers jours, je havn't été en mesure de faire quoi que ce soit dessiner sur l'écran.

La classe que je tente de tirer est la suivante:

import UIKit 

let NoOfGlasses = 8 
let π:CGFloat = CGFloat(M_PI) 

class CounterView: UIView { 

var counter: Int = 5 { 
    didSet { 
     if counter <= NoOfGlasses { 
      //the view needs to be refreshed 
      setNeedsDisplay() 
     } 
    } 
} 

var outlineColor: UIColor = UIColor.blueColor() 
var counterColor: UIColor = UIColor.orangeColor() 

override func drawRect(rect: CGRect) { 
    // 1 
    let center = CGPoint(x:bounds.width/2, y: bounds.height/2) 

    // 2 
    let radius: CGFloat = max(bounds.width, bounds.height) 

    // 3 
    let arcWidth: CGFloat = 76 

    // 4 
    let startAngle: CGFloat = 3 * π/4 
    let endAngle: CGFloat = π/4 

    // 5 
    var path = UIBezierPath(arcCenter: center, 
     radius: bounds.width/2 - arcWidth/2, 
     startAngle: startAngle, 
     endAngle: endAngle, 
     clockwise: true) 

    // 6 
    path.lineWidth = arcWidth 
    counterColor.setStroke() 
    path.stroke() 
} 
} 

Ce qui devrait aboutir à cette forme de base:

enter image description here

Toute aide à ce que je reçois cette forme dessinée en mon contrôleur de vue serait grandement apprécié!

Répondre

1

J'ai mis votre classe dans un terrain de jeu. J'ai pu obtenir de tirer avec les commandes suivantes:

let myview = CounterView() 
myview.frame = CGRectMake(100,100,300,300) 
myview.counter = 5 

Voici à quoi il ressemble:

Donut chart in Swift Playground

+0

Je n'ai pas fait grand-chose avec des terrains de jeux autres que de tester des constructions de langage de base. Comment fonctionne la création de vues? Il crée juste un survol qui montre la vue? –

+0

Oui. Il suffit de cliquer sur l'icône Aperçu rapide (globe oculaire) et il affiche la vue dans une fenêtre contextuelle. – vacawama

+0

A travaillé parfaitement. Merci beaucoup! –

0

Avez-vous oublié d'ajouter votre CounterView d'une sous-vue d'une vue qui est À l'écran?

+0

'cellView.addSubview (donutChart)' devrait le faire, correct? –

+0

Vous devez ajouter des sous-vues à cellView.contentView. Aussi, pourquoi créez-vous votre vue avec une origine de (100, 100)? À moins que la cellule soit vraiment grande, elle va la positionner très loin vers le bas et vers la droite. (Est-ce une application pour iPad seulement? Quelle est la taille de vos cellules?) –

+0

mon "cellView" est ce que j'ai appelé mon contentView pour ma cellule. En ce qui concerne les 100 100 100 100, il s'agissait simplement de tester le dessin. Après que la question ait reçu une réponse et que je l'ai eu pour dessiner correctement, je l'ai changé pour dessiner avec des contraintes au lieu bien sûr. –