这怎么可能?以下情况不应该如此吗?框架与中心矛盾
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 <Palette: 0x1f8d0290; frame = (2.017e-05 1.64772e-06; 1024 748); transform = [2.39836, 0, 0, 2.39836, 0, 0]; tag = 42; layer = <CALayer: 0x1f8b9b60>>
下面是从PO piece.superview结果:
$2 = 0x1f8d0290 <Palette: 0x1f8d0290; frame = (2.017e-05 1.64772e-06; 1024 748); transform = [2.39836, 0, 0, 2.39836, 0, 0]; tag = 42; layer = <CALayer: 0x1f8b9b60>>
两个片和SV是相同的类,它是UIImageView的子类。
有趣。我从来没有注意到那个警告。确实如此。变换不是身份。超级视图被缩放。但我认为总是有一个框架。相同的代码在类似缩放的其他视图上正常工作,所以我无法弄清楚这里有什么不同。考虑到这一点,我将不得不仔细检查我的整个应用程序。整个应用程序涉及翻译和缩放视图。 –
我会运行一些测试,并将其标记为答案,如果测试证实它(我没有理由在这一点上怀疑它)。 –
哎呀!当我第一次回复你的帖子的时候,我应该抓住这个。 sv和piece的转换就是身份。他们的超级观点的转变并非身份。所以我的困境仍然存在。 –