問題タブ [calayer]
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.
iphone - CALayer とその UIView の現在のコンテキストを取得する
iPhoneのUIViewでの描画処理を覚えようとしています。メソッド[UIView drawRect]が存在する場合にのみ、描画プロセスが発生することを理解しています。[ CALayer display ]で始まり、そのメソッド内から [UIView drawRect] が呼び出されます (正確には :first [ UIView drawLayer:layer inContext:context ] が呼び出され、このメソッド内から [UIView drawRect] が呼び出されます)。
2 つの質問があります。
- [ CALayer display ] メソッドはどのように UIView のコンテキストを取得しますか? ( [ CALayer display ] メソッド内の [ UIView drawLayer:layer inContext:context ] で使用されます)
- CALayer のコンテンツの更新はどのように行われますか? (ここのリンクに記載されている更新: [ CALayer 表示] )
objective-c - CABasicAnimation CALayer 変換での可視性 (オーバーラップ) の問題
オブジェクトに 2 つの UIImageView があり、本のようにページにアニメーション化しようとしています。組み込みのアニメーションのいくつかをしばらく使用して ( UIViewAnimationTransitionFlipFromLeft/Right
)、もっとうまくやれると判断しました。ここで、必要なアニメーションの半分の良い例を見つけました: http://fiftysixtysoftware.com/blog/2009/uiview-pageopen-sample-project/
そこから外挿してアニメーションを機能させることができました...しかし、私が抱えている問題は、アニメーション画像 (右の画像) が常に左の画像の下に表示されることです。
init のコードは次のとおりです。
...そして実際のアニメーションを実行します (これはアニメーションの後半であり、私の imageLeft ビューと「重なる」半分であることに注意してください):
私が試したこと:(上記のコードで両方を見ることができます)
- BringSubviewToFront/sendSubviewToBack
- レイヤーに Z インデックスを設定する
アドバイスや知恵をよろしくお願いします。繰り返しますが、問題は私の imageLeft が常にアニメーションの上に表示されることです。
iphone - drawLayer:inContext:に渡されるコンテキストは何ですか?
iPhoneの開発では、コンテキストをレイヤーで描きたいと思います。次に、質問は次のとおりです。
drawLayer:inContext:に渡されるコンテキストは正確には何ですか?レイヤーのコンテンツのコンテキストですか、それともUIviewのコンテキストですか?
これがUIViewのコンテキストである場合、それはどのUIViewですか?
前もって感謝します。
iphone - 割り当て解除されたインスタンスに送信
ビューコントローラをスタックにプッシュしてからポップオフすると、次のエラーが発生します。
dealloc
ポップオフされているViewControllerで呼び出された直後に発生し、このViewControllerのみに排他的であるようです。私はCALayerを使用していないので、CALayerはビュー自体と関係があると確信しています。
何か案は?
編集:これがバックトレースです
iphone - UIScrollView zoomToRect が指定された四角形にズームしない (UITouch CGPoint から作成)
私のアプリケーションには、1 つのサブビューを持つ UIScrollView があります。サブビューは、drawLayer イベントのレイヤーを使用して PDF ページをそれ自体に印刷する拡張 UIView です。
組み込みのピンチを使用したズームはうまく機能します。setZoomScale も期待どおりに機能します。
zoomToRect 関数に苦労しています。特定のCGPointからCGRect zoomRect変数を作成するオンラインの例を見つけました。
touchesEnded関数では、ダブルタップがあり、それらが完全にズームアウトされている場合、ダブルタップしたピンチの中心でピンチアウトしているかのように、作成した PDFUIView をズームインしたいと考えています。
したがって、ダブルタップした場合に zoomToRect を利用する関数に UITouch 変数を渡すとします。
私はリンゴのサイトで見つけた次の機能から始めました:
以下は、私の UIScrollView 拡張クラスの修正版です。
これを行うと、UIScrollView は中央ではなく上の zoomRect の右下端を使用してズームするように見えます。
このようにUIViewを作ると
赤いボックスが表示され、タッチ ポイントが中央で死んでいます。
注: 私は PC からこれを書いています。Mac で 2 分割の部分をいじったことを思い出したので、タッチ ポイントが中央にある四角形が描画されると仮定してください。UIView が中心から外れていても、正しい場所にズームされていれば問題ありません。
ただし、zoomToRect を実行すると、ズームイン結果の左上にある zoomRect の右下を使用しているように見えます。
また、UIScrollView をクリックする場所に応じて、さまざまな場所に固定されることに気付きました。真ん中にクロスがあり、ポイントを反映しているように見えますが、真ん中の左側のどこかが負の反射であり、中央の右側のどこかが正の反射ですか?
これは複雑に思えますが、UIView が描画できたので、描画された四角形にズームするだけではいけませんか?
高品質でスケーリングする PDF を作成する方法を理解するために多くの調査を行ったので、CALayer を使用すると座標系から外れている可能性があると思いますか? しかし、UIScrollView に対しては、768x985 のサイズのビューとして扱う必要があります。
これは一種の上級者向けです。zoomRect を作成するコードはすべて適切であると想定してください。UIScrollView にある UIView の CALayer には、より深いものがあります。
objective-c - マスクを使用したCALayerのブラインドダウンアニメーション
画像に「ブラインドダウン」効果を作成して、画像が「ブラインドダウン」して表示されるようにしたい。
このJavaScriptトランジションのようなもの: https ://github.com/madrobby/scriptaculous-http : //madrobby.github.io/scriptaculous/effect-blinddown/
マスクの位置を手動で変更すると、マスクの背後にある画像が非表示および表示されるため、マスクは正しく設定されていますが、アニメーション化されません。それは最終的にアニメートの最終位置になり、実際にブラインドになることはありません。
助けてください!たぶん、これはブラインドダウン効果を達成するための最良の方法ではありませんか?
iphone - 対角線を中心にCALayerを回転させるにはどうすればよいですか?
iPhoneアプリケーションのようなボードゲームで使用するフリップアニメーションを実装しようとしています。アニメーションは、回転して背中の色に変わるゲームピースのように見えるはずです(一種のリバーシピースのようなものです)。直交軸を中心にピースを反転させるアニメーションを作成できましたが、z軸を中心に回転を変更して対角軸を中心に反転しようとすると、実際の画像も回転します(当然のことながら)。代わりに、対角軸を中心に画像を「そのまま」回転させたいと思います。
私は変えようとしましlayer.sublayerTransform
たが、成功しませんでした。
これが私の現在の実装です。これは、アニメーションの最後に鏡像を取得する問題を解決するためのトリックを実行することによって機能します。解決策は、実際にレイヤーを180度回転させるのではなく、レイヤーを90度回転させ、画像を変更してから元に戻すことです。
最終バージョン:個別のキー付きアニメーションを作成し、各フレームの変換行列を計算するというLorenzosの提案に基づいています。このバージョンでは、代わりに、レイヤーサイズに基づいて必要な「ガイド」フレームの数を推定し、線形キーアニメーションを使用します。このバージョンは任意の角度で回転するため、対角線を中心に回転するには45度の角度を使用します。
使用例:
実装:
元のコード:
iphone - CALayerサブクラスのカスタムプロパティのアニメーション化
myIntというNSIntegerプロパティを持つCALayerサブクラスMyLayerがあります。このプロパティをCABasicAnimationでアニメートしたいのですが、CABasicAnimationはいわゆる「アニメート可能な」プロパティ(境界、位置など)でのみ機能するようです。カスタムmyIntプロパティをアニメート可能にするためにオーバーライドできるものはありますか?
iphone - CALayer/UIView (または OpenGL) を 3D でラップ/ワープする (iPhone)
3D空間でわずかに歪んだり曲げたりしようとしているUIView(したがってCALayer)があります。つまり、私の UIView がフラット ラベルであり、ビール瓶を部分的に包み込みたいとします (360 度ではなく、「片側」のみ)。
ビューのレイヤーに変換を適用することでこれが可能になると考えましたが、私が知る限り、この変換はレイヤーの回転、スケール、および平行移動に一様に制限されています。控えめに言っても、この時点で私の線形代数はぼやけているので、ここで間違っている可能性があります。
どうすればこれを達成できますか?
iphone - ネストされた CALayers が透視変換を取得しない
アプリケーションの 1 つで CALayers を使用して 3D スタイルの効果を作成しようとしています。ただし、ネストされた CALayer にはパースペクティブが適用されていないようです。
疑似コードで説明するために、パースペクティブが適用されたレイヤーがある場合、次のようにします。
追加してから、次のようにレイヤーを追加します。
パースペクティブは期待どおりに適用されます。ただし、レイヤーをさらにネストしようとすると
ネストされたレイヤーは、回転するとフラットになります。
あたかも、スーパーレイヤーがレイヤー階層でその直下にあるレイヤーにのみ変換を適用するかのようです。これは事実ですか?それとも私は何か間違ったことをしていますか?