0

これはどのように可能ですか?次のことは真実であるべきではありませんか?

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>>

piece と sv はどちらも UIImageView のサブクラスである同じクラスです。

4

1 に答える 1

2

あなたの問題はおそらく、あなたのtransformプロパティが恒等変換ではないということです。この場合、frameプロパティは単に定義されていません。ドキュメントを参照してください:
「警告: 変換プロパティが恒等変換でない場合、このプロパティの値は未定義であるため、無視する必要があります。」

于 2013-06-05T21:17:03.897 に答える