問題タブ [catransformlayer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - CaAnimations が正しく動作しない
Mac用のアプリを作っています。5 枚のカードが連続しており、ボタンをクリックすると、すべてのカードが順番に裏返されます (最初のカードが裏返された後、2 番目のカードが裏返されます)。私が抱えている問題は次のとおりです
アニメーション ボタンをクリックすると、カードが裏から表 (色から番号) に反転するはずで、すべてがうまく機能します。それらは、Y 軸を中心としたフリップ回転で次々と完全にアニメーション化されます。
しかし、アニメーション ボタンをクリックすると、カードが反対方向 (番号から色へ) に移動する必要があります。ここで何が起こるかを示します。
その後、すべてのカードが 1 つずつ (順番に) 正しいフロント レイヤーに変更され、バック レイヤーにアニメーション化されます。
アニメーションの動画はこちら
https://www.youtube.com/watch?v=fznUFR6pHCQ&feature=youtu.be
アニメーションを正常に表示できるようにするには、何を変更すればよいですか。
このようにカードを初期化しました
ボタンをクリックすると、この関数が呼び出されます
フリップ (flip1-5) のクラスは次のとおりです。 .m ファイル
.h ファイル
ios - CATransformLayer の不透明度は、その子に渡されるはずですか?
表と裏のカードビューがあります。表と裏はCALayer
で構成されていCATranformLayer
ます。後ろのレイヤーを変形して右方向を向くように反転させた後、z 方向に移動させて正面より少し後ろに置きます。
親の不透明度をCATransformLayer
1.0 から 0.0 に調整すると、前面がフェードアウトすると予想されますが、代わりに両方の面がブレンドされてフェードアウトします。
以前に両側のdoublesided
プロパティを に設定してこれを修正しましたNO
が、これにより警告が発生しました。
……というか、効果はあります。no に設定doublesided
すると、フェードアウト時にレイヤーがブレンドされなくなります。doublesided
が設定されていない場合 (デフォルトはYES
)の場合は次のようになります。
これはバグCATransformLayer
ですか、それとも私の理解が間違っていますか?
ここにも問題の要点があります。
ios - UIView を中央からではなく、CATransform3DScale を使用して右下隅からスケーリングします。
スクロールに基づいてプロフィール画像を拡大縮小 (縮小) したい。しかし、重要なことは、中心点からではなく、右下の角度からスケーリングしたいということです。つまり、画像に示すように、右下の角度を固定し、画像を左端と上端から縮小する必要があります。
これが私がしていることです。プロフィール写真の名前はimgVwProfilePic
:
今、その画像ビューにアンカーポイントを設定する必要があることを知りました。しかし、どこに設置するかわかりません。に設定しましたviewDidLoad
が、その画像ビューの元のフレームが変更されます。
ios - Autolayout と CGAffineTransform
ユーザーの操作中に UIView をスケーリングしようとしていますが、次のようにビューに CGAffineTransform を実装しました。
これはビューを適切にスケーリングするように見えましたが、画面上でビューを移動すると予測できない結果が生じ始めたことに後で気付きました。ビュー オブジェクトではなくレイヤーをアニメーション化することをお勧めします。
レイヤーに適用できないCATranform3D
ようだったので、上記のコードを使用するようにリファクタリングしようとしました。CAAffineTransform
しかし、CATransform3D
可能性があります。しかし、その Transform オブジェクトを使用してレイヤーをスケールする方法を理解できませんでした。
次のように、ビューのレイヤーに変換を適用しようとしました。
そして、それは私のビューのすべてのサブレイヤーをスケーリングします
しかし、私はそれを適用しようとします
というエラーが表示されます
readonly プロパティへの代入
クラスも調べましたCATransformLayer
が、それを self.layer に割り当てようとすると、次のエラーが表示されます。
互換性のない型 CATransform3D から CATransformLayer への割り当て
私の質問は、Autolayout コーディナントに干渉せずに UIView のレイヤーをスケーリングする方法があるかということです。
ios - 両面UIViewが機能しない
私はUIView
calledのサブクラスを持っています。このサブクラスが行うことはすべてreturn へTitleView
のオーバーライドです。layerClass
CATransformLayer
私のtitleView
プロパティにはいくつかのサブビューがあります。titleBackgroundView
と_ titleLabel
_
コードを実行するとtitleView
の最上層が表示されますが (緑色の背景)、フリップ アニメーションを実行するとアニメーションが表示されません。コードは終了状態にジャンプするだけです。さらに、最下層 (赤い背景) は表示されず、titleView
(変換されたtitleLabel
) の反転バージョンだけが表示されます。
IBOutlet セッターには、次のコードがあります。
titleView
アニメーション コード: