2012-11-07 24 views
5

Mam UIImageView, który dodaję do UIView, aby ulepszyć obszar, w którym są rozpoznawane dotknięcia. Kiedy próbuję wyśrodkować UIImageView w UIView (kod poniżej), środek jest ustawiony prawidłowo, ale kiedy uruchomię program, obraz jest pokazany poza ramką UIView.UIImageview nie wyśrodkuje w superview

Wszelkie pomysły?

// 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)); 

Dzięki!

Odpowiedz

20

Widok obrazu setCenter jest względny w stosunku do elementu nadrzędnego. Spróbuj:

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

Dzięki za szybką odpowiedź, ale gdy próbuję [self.imageView setCenter: self.center] wynik jest taki sam :-( – illogic

+1

To nie jest to, co sugerowałem. Musisz uzyskać punkt odnoszący się do rodzica. self.center zwróci je względem swojego rodzica i nie powinno działać – tillerstarr

+0

, ale self jest super-podglądem, więc w tym przypadku jest to rodzic. Czy ja się mylę? – illogic

0

spróbuj tego kodu, aby dać ramę UIImageView centrum UIView

1) w pliku .h

UIImageView *imgCenter; 

2) .m pliku

- (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]; 
} 

LUB

- (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]; 

Końcowy wynik jest

enter image description here

Powiązane problemy