Iphone iOS UIImageView位置

Iphone iOS UIImageView位置,iphone,ios,uiimageview,Iphone,Ios,Uiimageview,我需要在屏幕底部放置一个图像,因此我使用UIImageView并尝试了两种方法来指定其位置: someImageView.frame=CGRectMake(x, y, a, b); [someImageView initWithFrame:CGRectMake(x, y, a, b)]; 但它显示在顶部,覆盖着导航栏。我做错了什么?你建议做什么 提前谢谢。请记住屏幕左上角是(0,0),右下角是(320460)。 你可以用 someImageView.frame=CGRectMake(320 -

我需要在屏幕底部放置一个图像,因此我使用UIImageView并尝试了两种方法来指定其位置:

someImageView.frame=CGRectMake(x, y, a, b);
[someImageView initWithFrame:CGRectMake(x, y, a, b)];
但它显示在顶部,覆盖着导航栏。我做错了什么?你建议做什么


提前谢谢。

请记住屏幕左上角是(0,0),右下角是(320460)。 你可以用

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

假设
a
是宽度,
b
是高度

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

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

您确定您假定的屏幕坐标正确吗?屏幕的原点位于左上角,而不是左下角。尝试在Interface Builder中添加对象并在其中检查其框架

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

UIImageView *someImageView = [[UIImageView alloc] initWithFrame:frame];
而不是:

UIImageView *someImageView = [UIImageView alloc];
[someImageView initWithFrame:frame];
始终将
alloc
init
放在同一行代码上。

您的(x,y,a,b)可能是问题所在。确保y大于0。此外,请确保正在将框架添加到正确的子视图中。将其添加到错误的可能会导致问题。如果你仍然有问题,张贴你正在使用的代码,我可以提供更多帮助

另外,在没有先调用alloc的情况下,不要调用initWithFrame。应该是:

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

x、y、a、b的值可能是问题所在。视图层次结构是什么?向我们展示如何创建视图和添加uiimageview。是的,初始化就是问题所在!我做了“而不是”,呃。这两者之间有什么区别?@City Techno:我必须承认,我很惊讶,初始化是您的特定问题的原因,它更像是一个转瞬即逝的评论!将alloc和init保持在同一行实际上是一种约定,实际上不应该影响实现(只要它们被连续调用)。它正在对一个对象调用
initWithFrame:
,您已经对该对象调用了
init
,我警告该对象可能会导致意外行为。你可以编辑你的问题来显示你的代码片段吗(在修复之前)?StuDev,我是C/C++/Java背景的iOS新手,经常对此感到惊讶。我后来做这个框架的原因是因为我先用alloc做了initWithImage。在我换了这两个之后,它工作了。是的,我会确保这种奇怪的行为确实是由这两个人的顺序引起的,并发布更多的代码。谢谢Matthew。我的数字是正确的,但应该像你的一样放在一行中。另外,如果你使用InterfaceBuilder/Storyboard,请检查你在UIImageView上设置的自动调整大小限制。我刚刚调试了一个场景,由于高度的调整,视图并没有达到应有的高度。