我需要将图像放到屏幕的底部,所以我使用UIImageView并尝试了两种方法来指定它的位置:
someImageView.frame=CGRectMake(x, y, a, b);
[someImageView initWithFrame:CGRectMake(x, y, a, b)];
但它显示在顶部覆盖导航栏。我做错了什么?你有什么建议吗?
提前谢谢。
答案 0 :(得分:3)
您确定要采用正确的屏幕坐标吗?屏幕的原点位于左上角,而不是左下角。尝试在Interface Builder中添加一个对象并在那里检查它的框架。
我对上面代码段中的第二行感到有些困惑。您是否在已初始化的对象上调用initWithFrame:
?如果是这样,您可能会看到一些意外行为。应声明对象:
UIImageView *someImageView = [[UIImageView alloc] initWithFrame:frame];
而不是:
UIImageView *someImageView = [UIImageView alloc];
[someImageView initWithFrame:frame];
始终将alloc
和init
放在同一行代码上。
答案 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)];