私は90度に回転すると高さと幅が入れ替わるUIViewを持っています。さて、高さや幅を増やそうとすると、私は異常な外観になります。回転したUIViewの高さを変更するにはどうすればよいですか?フレームを変更せずにUIViewを回転
答えて
アップルのドキュメントでは、ビューのtransform
がID変換でない場合、ビューのframe
プロパティが未定義になると記載されています。
ビューを回転すると、ビューの変換が変更されます。
これでフレームが無効になるのはなぜですか? Appleのドキュメンテーションは実際にはあまり正確ではありません。フレームプロパティは、変換されたビューでは完全に無意味にならないわけではありません。代わりに、ビューの境界矩形、つまり変換されたビューが収まる最小の直立矩形が反映されます。
これは、実際にはframe
が派生プロパティであるためです。変換されたビューの "実際の高さ"、つまり変換が適用される前の座標系の高さを変更したい場合、そのプロパティはbounds
です。
ので、一言で言えば:メソッド次
CGRect bounds = myView.bounds;
bounds.size.height = newHeight;
myView.bounds = bounds;
私は自分のコードでこれらの行を入力すると、CGAffineTransformMakeRotation部?その後、または前に? –
おい、あなたは私の一日を作った。ああ、ありがとう、仲間。 –
ありがとうございます。お役に立てて嬉しいです!レコードのために(私はあなたがこれを今までに分かっているはずだと確信しています):境界を変更している場合、前または後の変換を変更しているかどうかは関係ありません。フレームを変更している場合は、 'CGAffineTransformIsIdentity(myView.transform)'がYES(つまり変換を変更する前)の間にのみこれを行うようにしてください。 フレーム対バウンドに関する詳細については、このブログの記事(私ではない)をチェックしてください:http://ashfurrow.com/blog/you-probably-dont-understand-frames-and-bounds – fzwo
使用...
- (void) runSpinAnimationOnView:(UIView*)view duration:(CGFloat)duration rotations:(CGFloat)rotations repeat:(float)repeat;
{
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 /* full rotation*/ * rotations * duration ];
rotationAnimation.duration = duration;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = repeat;
[view.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
}
- 1. UIBarButtonItem回転アニメーション後のフレームの変更
- 2. UIViewを回転させ、回転に合わせて表示サイズを変更するようにします。
- 3. UIViewでフレームを変更してUIImageViewを回転するアニメーションでサイズが変更される
- 4. QPixmapをサイズを変更せずに回転する方法
- 5. 回転後にUIkeyboardのフレームをプログラムで変更する
- 6. 回転変換後のUIViewのサイズ変更
- 7. UINavigationControllerランドスケープへの自動回転でUIViewフレームが更新されない
- 8. 回転時のキーボード回転UIView
- 9. UIView animate - 回転、スケールアップ、回転、スケールダウン
- 10. JavaFX:軸を回転させずにオブジェクトを回転する
- 11. URLを変更せずにYiiアプリケーションをフレームに変換する
- 12. UIView回転問題
- 13. ピボット上のUIViewを回転
- 14. Cocoa TouchでUIViewを回転
- 15. UIViewを回転する。回転中のクリッピングを防ぐには?
- 16. JLabelのテキストを回転させずに回転する
- 17. UIViewのフレームが反転された後に変更されました
- 18. フレーム間のOpenCV並進/回転変位?
- 19. 方向変更後のUIViewの回転幅/高さの検出
- 20. プログラムでipadを回転させずにビューの向きを変更する
- 21. 変更UIViewのフレームが接触イベント
- 22. イメージファイルの回転状態をメモリにロードせずに変更する方法
- 23. スケーリングせずにQPixmapを回転する
- 24. オリエンテーションを変えずにAndroidディスプレイを回転させる
- 25. CATransform3DMakeRotationでUIViewを左右に回転
- 26. トップバーを変更せずにUIViewを切り替える
- 27. shouldAutorotateToInterfaceOrientationを使用せずにプログラムでUIViewオリエンテーションを変更する
- 28. レイアウトを回転させずに向きが変わったときにボタンを回転させる方法は?
- 29. スムーズに回転し、影付きのUIViewのサイズを変更します。
- 30. 私は変換せずに回転Y度を
私はちょうどそれが画面に表示される道の角度を変更する方法が必要です。 –
'view.transform = CGAffineTransformMakeRotation(M_PI/2);' –
90度は一例です。私は手動でビューを回転しています。高さと幅は変化しています。私は画面上のビューの角度を変更する必要があります。 –