iOS - 为什么我的UIImageView会移动?

时间:2012-07-24 08:05:41

标签: ios uiimageview

这是我在iOS程序中绘制节拍器图像的功能。 当我加载它时,节拍器图像被加载,但是从屏幕的左上角“飞行”到所需的位置。这不是我想要的行为 - 我只是希望图像出现在所需的位置。有人可以告诉我为什么会这样,以及如何解决它? 提前谢谢了。

码头。

- (void) drawMetronomeForBeat: (int) beatNumber withNumberOfBeats:(int) noBeats
{

// remove any previous instances first
if (metronomeImageView) 
{
    [metronomeImageView removeFromSuperview];
}

NSString * imageName = @"metronome";
NSString * noBeatsStr = [NSString stringWithFormat:@"%d", noBeats];
NSString * beatNumberStr = [NSString stringWithFormat:@"%d", beatNumber];
imageName = [imageName stringByAppendingString:noBeatsStr]; 
imageName = [imageName stringByAppendingString:@"b"]; 
imageName = [imageName stringByAppendingString:beatNumberStr]; 

UIImage* image = [UIImage imageNamed: imageName];
UIImageView * symbolImageView = [[UIImageView alloc] initWithImage:image]; 

[symbolImageView setFrame:CGRectMake(410.0f, 215.0f, symbolImageView.frame.size.width, symbolImageView.frame.size.height)];
metronomeImageView = symbolImageView; 
[self.view addSubview:symbolImageView];
}

2 个答案:

答案 0 :(得分:0)

替换此行

[symbolImageView setFrame:CGRectMake(410.0f, 215.0f, symbolImageView.frame.size.width, symbolImageView.frame.size.height)]; 

[symbolImageView setFrame:CGRectMake(410.0f, 215.0f, 22, 22)];  //Change 22, 22 according to size that you need.

根据您正在显示的“真实图像”的大小,图像视图会变大或变小。所以它会移动一些位置,以便imageview保持中心对齐。

修改

我认为你正在为symbolImageView设置不同的框架。

试试这个

symbolImageView.frame = metronomeImageView.frame;

答案 1 :(得分:0)

我正在使用Controller来显示图像。我重新构建了我的代码,以便始终在视图代码的drawRect中“绘制”图像,就像这样..

- (void)drawRect:(CGRect)rect
{  

if (metronomeImage)
{
    [metronomeImage drawInRect:CGRectMake(410.0f, 215.0f, metronomeImage.size.width, metronomeImage.size.height)];
}
}

这没有问题 - 请注意我刚刚使用了drawInRect而只使用了UIImage而不是setFrame和UIImageView。我想我只会按照约定,在视图代码中应该完成任何图形,而不是控制器。