Ios 框架与中心矛盾

Ios 框架与中心矛盾,ios,frame,center,Ios,Frame,Center,这怎么可能?下面的话不应该是真的吗 v.center == CGPointMake(v.frame.origin.x + v.frame.size.x/2), v.frame.origin.y + v.frame.size.y)/2) 如果是这样的话,你怎么解释我得到的这个结果?代码如下: NSLog(@"sv center: %@",NSStringFromCGPoint(sv.center)); NSLog(@"pi

这怎么可能?下面的话不应该是真的吗

v.center == CGPointMake(v.frame.origin.x + v.frame.size.x/2), v.frame.origin.y + v.frame.size.y)/2)
如果是这样的话,你怎么解释我得到的这个结果?代码如下:

                 NSLog(@"sv    center: %@",NSStringFromCGPoint(sv.center));
                 NSLog(@"piece center: %@",NSStringFromCGPoint(piece.center));
                 NSLog(@"sv     frame: %@",NSStringFromCGRect(sv.frame));
                 NSLog(@"piece  frame: %@",NSStringFromCGRect(piece.frame));
我省略的NSLog语句之间没有代码。我注意到,当我在此之后中断时,po sv.superview和po piece.superview都返回相同的对象。无论如何,这些陈述的结果是:

... sv    center: {228.934, 120.684}
... piece center: {124.28, 51.1536}
... sv     frame: {{2.52823, -9.70338}, {122.04, 122.04}}
... piece  frame: {{63.2595, -9.86644}, {122.04, 122.04}}
通过计算,根据列出的帧,我希望中心分别是
{62.284115,56.16831}
{92.64975,56.08678}
。如果我不能像刚才描述的那样从帧中导出中心,还有什么可以忽略的呢

以下是po sv.superview的结果:

3=0x1f8d0290

以下是po piece.superview的结果:

$2=0x1f8d0290


piece和sv属于同一个类,它是UIImageView的子类。

您的问题可能是您的
转换属性不是标识转换。在这种情况下,
frame
属性没有定义,请参阅:

“警告:如果transform属性不是identity transform,则此属性的值未定义,因此应忽略。”

。我以前从未注意到这个警告。没错。转换不是身份。超级视图已缩放。但我认为总有一个框架。同样的代码在其他类似比例的视图上也能正常工作,所以我不知道这里有什么不同。考虑到这一点,我必须仔细检查我的整个应用程序。整个应用程序包括转换和缩放视图。我将运行一些测试,如果测试证实了这一点,我会将其标记为答案(我现在没有理由怀疑)。哎呀!当我第一次回复你的帖子时,我就应该抓住这个。sv和piece的变换是同一性。这是他们的超视图的转换,而不是身份。所以我的困境仍然存在,我收回它。我确实有一个变换,用来补偿superview的变换(缩放)。这只是一个翻译转换。将该代码从应用平移变换更改为重置中心后,该代码将按预期工作。