我需要把一个图像放在屏幕的底部,所以我使用UIImageView并尝试了两种方法来指定它的位置:
someImageView.frame=CGRectMake(x, y, a, b);
[someImageView initWithFrame:CGRectMake(x, y, a, b)];
但是它出现在顶部,覆盖了导航栏。我做错了什么?你有什么建议吗?
提前感谢。
您确定假设的屏幕坐标是正确的吗?屏幕的原点在左上方,而不是左下方。尝试在Interface Builder中添加一个对象,并在其中检查它的框架。
我对上面代码片段中的第二行有点困惑。你是在一个已经初始化的对象上调用initWithFrame:
吗?如果是这样,您可能会看到一些意想不到的行为。对象应该声明:
UIImageView *someImageView = [[UIImageView alloc] initWithFrame:frame];
而不是:
UIImageView *someImageView = [UIImageView alloc];
[someImageView initWithFrame:frame];
始终保持alloc
和init
在同一行代码
记住,屏幕的左上角是(0,0),而右下角是(320,460)。你可以使用
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);
你的(x,y,a,b)可能是问题所在。确保y大于0。另外,请确保将框架添加到正确的子视图中。将它添加到错误的代码中可能会导致问题。如果你仍然有问题,把你正在使用的代码贴出来,我可能会更有帮助。
另外,不要在不先调用alloc的情况下调用initWithFrame。应该是:
someImageView = [[UIImageView alloc] initWithFrame:CGRectMake(x, y, a, b)];