2012-04-02 5 views
0

Ich bin die CS 193P natürlich von der Stanford (in iTunesU) zu nehmen und ich versuche, die AxesDrawer Klasse, die sie für die Assigment 3, speziell diese Linien Teil des drawHashMarksInRect Verfahren bieten zu verstehenAxesdrawer Stanford cs193p Pixel und Punkte

Wie heißt das, dass sie mit Pixeln arbeiten und nicht die contentScaleFactor-Eigenschaft verwenden? verwenden sie tatsächlich Pixel oder nur Punkte und missbrauchen den Begriff ?. Hier es springt die AxesDrawer code

Antwort

0

Die Klasse ist richtig einen Punkt als Punkt behandeln - was bedeutet, dass Ihr bounds.size.width und bounds.size.height sind die gleichen Abmessungen wie ein iPhone 3GS Bildschirm Größe in Pixeln ...

Wenn Sie an einen angeschlossenen 3Gs den Inhalt Skalierungsfaktor kompilieren ist 1.

Wenn Sie auf einem iPhone 4 oder 4s den Inhalt Skalierungsfaktor gebunden sind, 2.

jedoch AxesDrawer hält Skala als pointsPerUnit, die auf einem iPhone 4 ist 0,5, also die Skala, die Sie daran übergeben, ist 0,5

Sie erhalten dies, indem Sie Folgendes für die grafische Ansicht in die UIView-Klasse einfügen:

CGFloat screenScale = self.contentScaleFactor; 
CGFloat scaleForAxesDrawer = 1/screenScale; 
[[self.axes class] drawAxesInRect:graphArea originAtPoint:axisPoint scale:scaleForAxesDrawer]; 
// where graphArea is a CGRect and axisPoint is a CGPoint 

zum Beispiel.

AxesDrawer wird ein Hashzeichen und eine Zahl entlang der Achse nicht weniger als alle 25 Pixel setzen.

+0

Hallo, danke für Ihre Antwort, aber Sie sagen, dass "AxesDrawer Skala als PunktePerUnit, die auf einem iPhone 4 ist 0,5, so die Skala, die Sie daran übergeben 0,5" und 0,5 wäre Pixel nicht Punkte, und Das API-Dokument besagt, dass die Skala in Punkten und nicht in Pixeln sein soll. – Edzul

0

Aber contentScaleFactor ist Anzahl der Pixel pro Punkt. Im Falle einer hohen Auflösung wird es mehr Pixel pro Punkt haben. Da es sich jedoch um Punkte handelt, sollte sich das System nicht um sich selbst kümmern, ohne uns einzubeziehen?