Ich bin ein Verfahren zu schreiben, die einen Punkt erhalten sollen: ‚in_centre‘, die in dem Koordinatensystem der aktuellen Ansicht sein werden (auch als ein anderer Parameter übergeben: ‚Ziel‘)iOS: [X convertPoint: somePoint toView: nil]; FAILS zum Fenster-Koord zurück
Ich muss diesen Punkt in Fensterkoordinaten umwandeln.
Die Dokumentation sagt, ich sollte dies tun, indem Sie den zweiten Parameter hier auf Null setzen:
centerPoint = [target convertPoint:in_centre toView:nil]; // get in Window Coords
NSLog(@"passed in (vc): %@", NSStringFromCGPoint(in_centre));
NSLog(@"centerPoint_wc: %@", NSStringFromCGPoint(centerPoint));
Aber die Ausgabe zeigt, dass es nichts zu tun ist.
2010-11-24 07: 32: 45,815 ChordWheel [3195: 207] in (vc) bestanden: {150, 150}
2010-11-24 07: 32: 45.816 ChordWheel [3195: 207] centerPoint_wc : {150, 150}
das ist falsch - es sollte das Zentrum des iPhone-Bildschirm sein: {160, 240}
Was ist los?
EDIT: Danke für die Vorschläge - ich versuchte, sich und noch keine Freude:
- (id) initWithFrame: (CGRect) theFrame
target: (id) p_target
actionPlayChord: (SEL) p_actionPlayChord
actionSettings: (SEL) p_actionSettingsClick
{
target = p_target;
actionPlayChord = p_actionPlayChord;
self = [super initWithFrame: theFrame];
if (! self)
return nil;
CGPoint centre = CGPointMake(theFrame.size.width/2.0,
theFrame.size.height/2.0);
CGPoint c_wc = [self convertPoint: centre toView: nil];
CGPoint c_wc2 = [self convertPoint: centre toView: self.window];
NSLog(NSStringFromCGRect(theFrame));
NSLog(NSStringFromCGPoint(centre));
NSLog(NSStringFromCGPoint(c_wc));
NSLog(NSStringFromCGPoint(c_wc2));
2010-11-24 14: 33: 55,202 ChordWheel [3452: 207] {{10, 90} , {300, 300}}
2010-11-24 14: 33: 55.202 ChordWheel [3452: 207] {150, 150}
2010-11-24 14: 33: 55.203 ChordWheel [3452: 207] {150 150}
2010-11-24 14: 33: 55,204 ChordWheel [3452: 207] {150, 150}
Sie könnten ungerades Verhalten sehen, wenn 'target' gleich null ist, da der Rückgabewert eines struct-reporting-Methodenaufrufs auf nil nicht definiert ist. –