【问题标题】:iPhone UIView center property returning bad valueiPhone UIView 中心属性返回错误值
【发布时间】:2011-06-29 20:33:12
【问题描述】:

我正在为 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

imgView 的 x 坐标显示为 0(我知道这是不对的,因为 imgView 靠近 Interface Builder 屏幕的中上部)和一些超出 iPhone 屏幕边界的巨大不可能数字y 坐标(上面输出中的 y 坐标可能不完全正确,但它是一个像这样的巨大数字)。我每次都得到相同的输出。 imgView 已正确链接到其 File's Owner 插座,我什至可以使用

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

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

CGPoint viewcoords=[[imgView frame] origin]; 

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

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

【问题讨论】:

    标签: objective-c ios4 uiview


    【解决方案1】:

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

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

    【讨论】:

    • 好的。我终于明白了。当我回到家时,我更改了格式说明符,果然它给了我正确的坐标。谢谢!
    • 您可以通过单击答案左侧的复选框轮廓来表明某些答案是正确的。这将表明您的问题已解决 + 将是对回答者的良好奖励;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多