[解決済み] UIViewに透視変換を適用するにはどうすればよいですか?
質問
UIViewに対して透視変換を行いたい(coverflowで見られるような)。
このようなことが可能かどうか、どなたかご存知でしょうか?
を使うことを検討しました。
CALayer
しかし、iPhoneでこの種のトランスフォームを作成する方法については、まだよく分かっていません。
どんなヘルプ、ポインタ、サンプルコードでも結構です。
どのように解決するのですか?
ベンが言ったように、あなたは
UIView's
レイヤーを使用し
CATransform3D
を実行します。
layer's
rotation
. として、遠近法を動作させるためのトリックは
ここに記載されている
の1つに直接アクセスすることです。
cells
の
CATransform3D
(m34). 行列の計算は苦手なので、なぜこれがうまくいくのか正確に説明することはできませんが、うまくいくのです。 この値を負の分数に設定して、最初の変換を行い、それにレイヤーの回転変換を適用する必要があります。 また、次のようなこともできるはずです。
オブジェクトC
UIView *myView = [[self subviews] objectAtIndex:0];
CALayer *layer = myView.layer;
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / -500;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 45.0f * M_PI / 180.0f, 0.0f, 1.0f, 0.0f);
layer.transform = rotationAndPerspectiveTransform;
Swift 5.0
if let myView = self.subviews.first {
let layer = myView.layer
var rotationAndPerspectiveTransform = CATransform3DIdentity
rotationAndPerspectiveTransform.m34 = 1.0 / -500
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 45.0 * .pi / 180.0, 0.0, 1.0, 0.0)
layer.transform = rotationAndPerspectiveTransform
}
で、回転ごとにレイヤーの変換を一から作り直します。
この完全な例(コード付き)は次のとおりです。
こちら
ここでは、タッチベースの回転とスケーリングを、いくつかの
CALayers
Bill Dudneyの例に基づいています。 このページの一番下にある最新版のプログラムでは、このような透視操作を実装しています。 このコードは簡単に読むことができるはずです。
は
sublayerTransform
のサブレイヤーに適用されるトランスフォームです。
UIView's
CALayer
. サブレイヤーがない場合は、気にする必要はありません。 私の例でsublayerTransformを使用しているのは、単に2つの
CALayers
回転させる1つのレイヤーの中に含まれています。
関連
-
[解決済み】Xcode - 'NSUnknownKeyException', reason: ... this class is not key value coding-compliant for the key X" エラーの修正方法とは?
-
iOS classic error Undefined symbols for architecture XXX:
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] UITableViewの選択を無効にするにはどうすればよいですか?
-
[解決済み] Xcode 12、iOS Simulator用にビルドしても、iOS用にビルドされたオブジェクトファイルでは、アーキテクチャ「arm64」用にリンクされます。
-
[解決済み] UIViewに角丸をつける
-
[解決済み] UIViewの左上と右上だけにcornerRadiusを設定する方法は?
-
[解決済み] UIViewの角丸とドロップシャドウ?
-
[解決済み] Swift 3でディスパッチキューを作成する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
libc++abi.dylib が NSException 型の捕捉できない例外で終了する理由 エラー
-
[エラー処理】iOSのエラー、アーキテクチャx86_64の未定義シンボルについて
-
[解決済み] Xcode 6.3 - 現在の iOS Development 証明書または保留中の証明書要求がすでにあります。
-
[解決済み] 文字列の長さを取得する
-
[解決済み] Xcodeにおけるバージョンとビルドの比較
-
[解決済み] UIViewController のビューが表示されているかどうかを確認する方法
-
[解決済み] UITableViewCell、スワイプ時に削除ボタンを表示させる
-
[解決済み] Swiftの配列を文字列に変換するには?
-
[解決済み] UITextBorderStyleNoneを使用してUITextFieldのパディングを設定する
-
[解決済み] UITableView - トップにスクロールする