iPhone UIView中心属性返回错误值

时间:2011-02-18 14:01:11

标签: objective-c ios4 uiview

我正在使用基于视图的应用程序编译iPhoneOS 4.0模拟器(调试),Xcode 3.2.3。

我有一个UIImageView,imgView,其中心我想要坐标。我这样得到它们:

CGPoint imgviewcoords=[imgView center];

这不会产生任何编译时错误,但是当我按照这样的NSLog坐标时:

NSLog(@"x: %i, y:%i", imgviewcoords.x, imgviewcoords.y);

我得到了这个输出:

x: 0, y:108762

它显示0表示imgView的x坐标(我知道这是不正确的,因为imgView在Interface Builder的屏幕的中上方附近)和一些巨大的不可能的数字,它超越了iPhone的屏幕边界y坐标(上面输出中的y坐标可能不完全正确,但它是一些巨大的数字)。我每次都得到同样的确切输出。 imgView已正确链接到其文件所有者插座,我甚至可以使用

更改其图像
[imgview setImage:[UIImage imageNamed:@"./blahblah.png"]];

我似乎无法正确获得其中心坐标。 我也试过了

CGPoint viewcoords=[[imgView frame] origin]; 

并且如上所述在imgviewcoords中给出了相同的错误坐标。 这种情况发生在我的应用程序主UIView中的每个控件上,除了每个控件的y坐标略有不同。 我做错了什么?

@Vladimir:感谢您提出更改NSLog格式说明符的建议。但是,我不认为这是输出问题。我认为这是[imgView中心]调用不起作用。我正在使用从[imgView Center]返回的CGPoint来设置另一个UIImageView的中心,而UIImageView只是移动到屏幕的左上角而不是移动到imgView的中心。所以我猜测它是[imgView center]调用返回一组错误的坐标。

1 个答案:

答案 0 :(得分:4)

%i格式说明符期望整数值和CGPoint组件具有CGFloat类型,尝试使用正确的说明符(%f) - 可能会得到正确的输出:

NSLog(@"x: %f, y:%f", imgviewcoords.x, imgviewcoords.y);