iOS UIImageView位置

时间:2011-09-12 18:52:49

标签: iphone ios uiimageview

我需要将图像放到屏幕的底部,所以我使用UIImageView并尝试了两种方法来指定它的位置:

someImageView.frame=CGRectMake(x, y, a, b);
[someImageView initWithFrame:CGRectMake(x, y, a, b)];

但它显示在顶部覆盖导航栏。我做错了什么?你有什么建议吗?

提前谢谢。

4 个答案:

答案 0 :(得分:3)

您确定要采用正确的屏幕坐标吗?屏幕的原点位于左上角,而不是左下角。尝试在Interface Builder中添加一个对象并在那里检查它的框架。

我对上面代码段中的第二行感到有些困惑。您是否在已初始化的对象上调用initWithFrame:?如果是这样,您可能会看到一些意外行为。应声明对象:

UIImageView *someImageView = [[UIImageView alloc] initWithFrame:frame];

而不是:

UIImageView *someImageView = [UIImageView alloc];
[someImageView initWithFrame:frame];

始终将allocinit放在同一行代码上。

答案 1 :(得分:1)

请记住,屏幕的左上角是(0,0),而右下角是(320,460)。 你可以使用

someImageView.frame=CGRectMake(320 - a, 460 - b, a, b);

假设a是宽度,b是高度

答案 2 :(得分:1)

您的代码是正确的!检查您在CGRectMake中使用的值。例如:

someImageView.frame = CGRectMake(0, 
   [UIScreen mainScreen].bounds.size.height-ivHeight,
   [UIScreen mainScreen].bounds.size.width, 
   ivHeight);

答案 3 :(得分:1)

你的(x,y,a,b)可能是问题所在。确保y是> 0.此外,请确保将帧添加到正确的子视图中。将其添加到错误的可能会导致问题。如果您仍然遇到问题,请发布您正在使用的代码,我可能会更有帮助。

另外,不要先调用alloc而不调用initWithFrame。它应该是:

someImageView = [[UIImageView alloc] initWithFrame:CGRectMake(x, y, a, b)];