2012-11-07 14 views
5

UIView'e eklediğim UIImageView uygulamasında, dokunmaların tanındığı alanı geliştirmek için kullanıyorum. UIView'deki UIImageView'ı (aşağıda kod) ortalamayı denediğimde, merkez düzgün olarak ayarlanmıştı, ancak programı çalıştırdığımda, görüntü UIView çerçevesinin dışında gösteriliyor.UIImageview superview içinde merkezileşmeyecek

Herhangi bir fikrin var mı?

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

Teşekkürler!

cevap

20

imageview setCenter, üst öğesine göreli olarak gelir. Deneyin:

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

Teşekkür ama ben [self.imageView setCenter: self.center] denerseniz Sonuç aynı :-( – illogic

+1

Bu benim önerdiğim şey değil. Ebeveynlere göre bir puan almanız gerekir. self.center, ebeveyne göre döndürür ve – tillerstarr

+0

çalışmamalı, ancak kendisinin süper görüntü olması ve bu durumda ebeveynin de olması gerekir. Yoksa yanılıyor muyum? – illogic

0

UIImageView Frame .m dosyasında .h dosyasında

UIImageView *imgCenter; 

2) içinde UIView

1) arasında Merkezi vermek için bu kodu deneyin

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

VEYA

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

Final çıkış hızlı cevap için

enter image description here