6

タッチが認識される領域を強化するために UIView に追加する UIImageView があります。UIImageView を UIView (以下のコード) の中央に配置しようとすると、中央が正しく設定されますが、プログラムを実行すると、UIView のフレームの外側に画像が表示されます。

何か案は?

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

ありがとう!

4

3 に答える 3

21

imageview setCenter は、その親に対して相対的です。試す:

[self.imageView setCenter:CGPointMake(self.bounds.size.width/2, self.bounds.size.height/2)];
于 2012-11-07T13:53:11.287 に答える
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];

最終的な出力は

ここに画像の説明を入力

于 2015-05-28T14:41:03.817 に答える
0

このコードを試して、UIImageView Frame Center of UIViewを指定してください

1) .h ファイル内

UIImageView *imgCenter;

2) .m ファイル内

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

また

- (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];
}
于 2014-12-02T13:33:26.203 に答える