2012-05-23 5 views
5

私はdrawRectでいくつかの特定の図を描いているという見解を持っています。これらの図面は動的で、ビューの幅と高さに基づいています。次に、それを含むビューは回転変換を適用します。しかし、この変換はdrawRectでの私の描画に影響を与える私のビューのフレームの値を調整するようです。IOSビュー変換はフレームを変更しますか?

NSLog(@ "前:%f、%f、%f、%f"、button.frame.origin.x、button.frame.origin.y、button.frame.size.width、button.frame .size.height);ここで

CGAffineTransform currentTransform = button.transform; 
    CGAffineTransform transformRotate = CGAffineTransformMakeRotation(degreesToRadians); 
    button.transform = transformRotate; 

    NSLog(@"after:%f,%f,%f,%f",button.frame.origin.x,button.frame.origin.y,button.frame.size.width,button.frame.size.height); 

が出力されます後50.000000,100.000000,150.000000,50.000000 ::前

65.849365,47.548096,118.301262,154.903809

は、この正しい動作ですか私は間違って変換を適用しています?

答えて

12

UIView's frame propertyの参照ドキュメントを参照してください。


フレーム

そのスーパービューの座標系におけるビューの位置とサイズを記述するフレーム矩形、。 transformプロパティ場合

警告

@property(nonatomic) CGRect frame 

は の値がこのプロパティが定義されていないため、無視されるべきで、恒等変換ではありません。その警告にもかかわらず


意図したように、物事が動作します。変換(他のアイデンティティ)が適用されると、フレームは通常、元のビューの投影矩形になります。 しかし、再度、適用された変換で実際にフレームについて調べ、適切に取得するためにCGRectApplyAffineTransformを使用する場合は、その警告を無視しないでください。

関連する問題