2012-07-24 78 views
1

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

码头。

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

任何截图? – holex 2012-07-24 08:11:21

+1

尝试删除if语句(用它的正文),并用'[self.view addSubview:metronomeImageView]替换最后一行;' – benjammin 2012-07-24 08:14:29

+0

不起作用...我意识到如果我直接在视图代码中绘制图像没有发生这种情况。虽然... – lppier 2012-07-24 12:12:17

回答

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; 
+0

不起作用..谢谢。同样的事情发生,只是图像的大小不同。 – lppier 2012-07-24 12:11:31

0

我所用的控制器,以显示图像。我重组我的代码,以便图像始终在视图代码的drawRect“绘制”,这样的..

- (void)drawRect:(CGRect)rect 
{ 

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

这工作没有任何问题 - 请注意,我只是用drawInRect和公正的UIImage代替SETFRAME和UIImageView。我想我会遵循约定,任何图形应该在视图代码中完成,而不是控制器。

相关问题