2012-11-07 10 views
5

Ich habe eine UIImageView, die ich zu einer UIView hinzufügen, um den Bereich zu verbessern, in dem Berührungen erkannt werden. Wenn ich versuche, die UIImageView in der UIView zu zentrieren (Code unten), wird die Mitte richtig eingestellt, aber wenn ich das Programm ausführe, wird das Bild weit außerhalb des Rahmens der UIView angezeigt.UIImageview wird nicht in superview zentrieren

Irgendwelche Ideen?

// image size is 32x32 pixels but view will be created with 44x44 so touch recognition is better 
self = [super initWithFrame:CGRectMake(position.x, position.y, 44, 44)]; 

if (self) { 
    switch (color) { 
     case Blue: 
      self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pin_red"]]; 
      break; 
     case Green: 
      self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pin_green"]]; 
     default: 
      break; 
    } 

    [self setCenter:position]; 
    [self addSubview:self.imageView]; 
    [self setExclusiveTouch:YES];   
    [self setBackgroundColor:[UIColor clearColor]]; 

    [self.imageView setCenter:position]; 

    NSLog(@"uiview center: %@", NSStringFromCGPoint(self.center)); 
    NSLog(@"image center: %@", NSStringFromCGPoint(self.imageView.center)); 

Vielen Dank!

Antwort

20

Das imageview setCenter ist relativ zu seinem übergeordneten Element. Versuchen:

[self.imageView setCenter:CGPointMake(self.bounds.size.width/2, self.bounds.size.height/2)]; 
+0

Danke für die schnelle Antwort, aber wenn ich versuche, [self.imageView setCenter: self.center] Das Ergebnis ist dasselbe :-( – illogic

+1

Das war nicht was ich vorschlug. Sie müssen einen Punkt erhalten, der relativ zum übergeordneten Objekt ist. self.center wird es relativ zu seinem Elternteil zurückgeben und sollte nicht funktionieren – tillerstarr

+0

aber Selbst ist die Superansicht und so ist es das Elternteil in diesem Fall. Oder liege ich falsch? – illogic

0

diesen Code versuchen, die UIImageView Rahmen Zentrum von UIView

1) in h-Datei zu geben

UIImageView *imgCenter; 

2) in .m-Datei

- (void)viewDidLoad 
{ 
    imgCenter=[[UIImageView alloc]initWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width/2, [UIScreen mainScreen].bounds.size.height/2, 35, 35)]; 
    [imgCenter setImage:[UIImage imageNamed:@"centerImage.png"]]; 
    [self.view addSubview:imgCenter]; 
} 

ODER

- (void)viewDidLoad 
{ 
    imgCenter=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 35, 35)]; 
    imgCenter.center = self.view.center; 
    [imgCenter setImage:[UIImage imageNamed:@"centerImage.png"]]; 
    [self.view addSubview:imgCenter]; 
} 
1
UIImageView *imageforFace=[[UIImageView alloc]initWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width/2,[UIScreen mainScreen].bounds.size.height/2, 125,125)]; 
imageforFace.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin; 
[imageforFace setCenter:CGPointMake(self.view.bounds.size.width/2, self.view.bounds.size.height/2)]; 
imageforFace.image=[UIImage imageNamed:@"face.png"]; 
[self.view addSubview:imageforFace]; 

Finale der Ausgang

enter image description here