这怎么可能?下面的情况不应该是正确的吗?
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片。父视图都返回相同的对象。无论如何,这些语句的结果是:
... 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>>
piece和sv都属于同一个类,是UIImageView的子类
您的问题可能是您的transform
属性不是恒等变换。在这种情况下,frame
属性根本没有定义,请参阅文档:
"警告:如果transform属性不是单位变换,则此属性的值未定义,因此应忽略。"