問題タブ [catiledlayer]
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 - PhotoScroller で白いタイルの境界線を取り除く
Apple には、PhotoScroller と呼ばれる iOS サンプル アプリがあり、CATiledLayer
とUIScrollViewer
. サンプル アプリでは、タイルを示す方法として、各タイルの周りに白いボックスが表示されます (つまり、ズームインすると、タイルは画像の小さな部分を表します)。
これらの白い線を取り除くにはどうすればよいですか? 私はコードを調べましたが、それらがどこから来たのかわかりません。(私はiOSとObjective-Cが初めてなので、これは明らかです。)
iphone - ZoomingPDFViewer アップルの例
ZoomingPDFViewer の Apple のサンプル コードを理解しようとしています。これが私の心の中でどのように機能するかを理解する上で私が持っているいくつかの質問です. 私はそれを正しく理解しているかどうかはよくわかりません。コードのリンクは次のとおりです。http://developer.apple.com/library/ios/#samplecode/ZoomingPDFViewer/Introduction/Intro.html
(1) CATiledLayer は、さまざまなズーム レベルで PDF を表すために使用されます。クラスリファレンスを見るためにこのクラスが使用されていると思います。ズーム機能にこのクラス以外のものを使用することはありますか?
(2) TiledPDFView の initWithFrame では、次のことを行います。tiledLayer.tileSize = CGSizeMake(512.0, 512.0);
tileSize は画像全体を構成するタイルですか? もしそうなら、なぜそんなに大きなサイズなのですか?
(3) oldPDFView と pdfView はどのように機能しますか? ズームのさまざまな段階でどちらが前にあり、いつスワップアウトするかなど。ロジックの流れを理解するのに苦労しています。ありがとう。
iphone - iPhoneで画像をタイル表示するためのより良い方法はありますか
現在、Apple ストアで PhotoScroller アプリが行われている方法で、URL を介して画像をダウンロードし、それらの画像を並べて表示しようとしています。最大画像サイズは 4000 * 4000 で、RGB 形式です。これらの画像をタイル サイズ 256 * 256 でタイル表示しています。画像をタイル表示してディスクにファイルを書き込むには、非常に長い時間がかかります。ファイルを並べてiPhoneにロードできる場合は、より良いアプローチを探していました。合計 4 回の URL 呼び出しで、各 URL 呼び出しは画像をフェッチし、タイリング プロセスを通過し、PhotoScroller アプリを呼び出して iPhone でそれらの画像を起動します。
誰かがそのような問題に遭遇し、それについて詳しく知っている場合は、いくつかのアイデアを共有していただけますか.
iphone - PDF とズーム - CATiledLayer
問題があります。私はプログラマーではありませんが、楽しみのためにアプリを作成しようとしています。私はPDFビューアを作成しようとしています.UIViewクラスを次のように作成します:
今、ズームを追加しようとしましたが、運が悪かったので、ズームからレイヤーを作成しました:
編集:ズーム作業、問題だったshouldAutorotateToInterfaceOrientationを使用します(コードを書き直す必要があります)が、ズーム品質が悪化すると動作します。:(
ios - 非常に大きなUIscrollviewUIImage+ビデオをレンダリングする
私は自分のアプリで特定の機能を作成していますが、それを行うための最良の方法がわかりません。
画面がUIScrollview
大きい(1024 * 748)。このUIScrollView
中に。を挿入しUIView
ます。このビューは非常に大きく(8000 * 748)、テーブルを表します。このテーブルに、別UIImageView
のビデオを挿入します。このビューをスクロールビューに合わせたユーザーに提示すると、ユーザーはピンチしてズームしたり、ビデオや画像を詳細に表示したりできます。
私は2つの異なるアプローチを試しました:
最初のアプローチでは、
UIScrollView
非同期ですべてのコンテンツをロードし、ロードされたときにユーザーに提示して、ズームレベルを0.4に設定します。次に、Googleマップアプリと同じ動作をするために使用しようとし
CATiledLayer
ましたが、ビデオを挿入するときに問題が発生します。
誰かが私に最善の方法を教えてもらえますか?
uiview - 基になるサブビューの CATiledLayer 再描画
UIViewController のビューのサブビューとして、2 つのサブクラス化された UIView があります。最初の UIView にはレイヤー クラスとして CATiledLayer があります。そして、背景に配置しました。最初の上に配置された 2 番目の UIView。CATiledLayerでUIViewを再描画したい。[myView.layer setNeedsDisplay] を呼び出そうとしましたが、機能しません。
iphone - CATiledLayer の上に UIImage を追加します。
CATiledLayer の上に UIImage を描画することは可能ですか。主なアイデアは、ビュー上の位置に注意することです。Apple Library の PhotoScroller の例を使用しましたが、tileRect の上に UIImage を追加しようとしています。どんな助けでも大歓迎です。
iphone - UIScrollView で zoomScale をアニメーション化するときの不要なスクロール
エグゼクティブ サマリー:UIScrollView
の値に望ましくない変更を加えることがあり
、contentOffset
その結果、アプリが表示中のドキュメント内の間違った場所を表示する原因となります。不要な変更は、スクロール ビューのアニメーション化された変更に関連して発生しますzoomScale
。
詳細:
でズームアウトするときに問題が発生しCATiledLayer
ましたUIScrollView
。はCATiledLayer
pdfを保持しcontentOffset
、特定の範囲内にある場合、ズームアウトするとcontentOffset
、ズームが発生する前に変更されます(これがバグです)。AppleのcontentOffset
コードで変更されたようです。
問題を説明するために、Apple のサンプル アプリ ZoomingPDFViewer を変更しました。コードは github にあります: https://github.com/DirkMaas/ZoomingPDFViewer-bug
タップするとzoomScale
、 を使用して 0.5 に変更されanimateWithDuration
、ズームアウトします。UIScrollView
がcontentOffset.y
約 2700 未満または 5900 を超える場合、アニメーションzoomScale
は正常に機能します。contentOffset.y
がこれらの 2 つの値の間にあるときにタップが発生するとcontentOffset.y
、 は約 2700 にジャンプし (アニメーション化されません)、その後zoomScale
アニメーションが発生しますが、同時にスクロールが発生するため、アニメーションが完了すると、contentOffset.y
がその場所になります。する必要があります。しかし、ジャンプはどこから来るのでしょうか?
たとえばcontentOffset.y
、画面がタップされたときの値が 2000だとしますzoomScale
。アニメーションは問題なく動作します。contentOffset.y
変更されません。
しかしcontentOffset.y
、画面をタップしたときに が 4000 の場合: はcontentOffset.y
アニメーションなしで約 2700 にジャンプし、その時点からズームとスクロールが開始され、同時に発生します。アニメーションが完了すると、4000 からまっすぐにズームしたように見えるため、最終的に正しい場所に移動しますが、動作は間違っています。
UI に関する注意事項:
- テキストは通常の方法で垂直方向にスクロールできます
- テキストは通常の方法でピンチすることでズームインおよびズームアウトできます
- 1 回タップすると が
zoomScale
0.5 に設定されます。変更はアニメーション化されます
zoomScale
が 0.5 より大きい場合、ジャンプはそれほど大きくないことに気付きました。また、のsetZoomScale:animated:
代わりに使用するanimateWithDuration
とバグはなくなりますが、アニメーションを連鎖させる必要があるため使用できません。
これが私がしたことの要約です(githubのコードにはこれらの変更が含まれています):
- http://developer.apple.com/library/ios/#samplecode/ZoomingPDFViewer/Introduction/Intro.htmlから ZoomingPDFViewer をダウンロード し、XCode で開きました。
- ビルド設定の変更 | アーキテクチャ | ベース SDK を最新の iOS (iOS 4.3) に変更すると、ビルド設定が変更されました | GCC 4.2 - 言語 | ソースを Objective-C++ としてコンパイルする
- プロジェクトから TestPage.pdf を削除しました
- プロジェクトの代わりに「whoiam 5 24 cropped 3-2.pdf」を追加
- クラス
PDFScrollView *scrollView;
に追加ZoomingPDFViewerViewController
- 代わりに初期化するように変更さ
loadView
れましたZoomingPDFViewerViewController
scrollView
sv
viewDidLoad
、handleTapFrom:recognizer
およびPDFScrollview.mzoomOut
に追加ZoomingPDFViewerViewController
- コメントアウトされて
scrollViewDidEndZooming:withView:atScale
おりscrollViewWillBeginZooming:withView:
、画像の背景で目前の問題から気をそらすようなことをしているためです
私と一緒にいてくれてありがとう、そしてすべての助けを!
iphone - UIScrollView での大きな画像のズームとスクロール
私はかなり長い間これで立ち往生しています。私は他の多くの回答とAppleの例を見てきました。
私が知りたいのは、UIScrollView に大きな画像を読み込んで、Photos アプリのようにページを移動してズームインする方法です。
大きな画像をスクロールする必要があるアプリに取り組んでいます (大きな画像とは、1024 x 1024 を超える画像を意味します)。写真アプリと同様の機能を既に実装しています。ただし、大きな画像を使用しているため、メモリの警告などが表示されます。警告が表示される理由はわかっており、画像を並べて表示する必要があることもわかっています。
Apple の例は、既に存在する小さな画像を使ったタイリングを示しています。私のアプリは複数の画像をダウンロードしてディスクに保存し、ユーザーは後でそれらを見ることができます。したがって、他のプログラムを使用して画像を切り取ることはできません。
フルサイズの画像を並べて表示できるものが必要です。どんな助けでも大歓迎です。さらに、前述したように、Tiling で何かをしなければならないこともわかっています。しかし、私はこれに慣れていないので、出発点として使用できるサンプルコードが回答に含まれていれば幸いです。
私は他の質問を見てきましたが、満足のいく回答が得られなかったようです。そのため、この質問を再度尋ねています。
再度、感謝します!
iphone - CATiledLayerは、新しいタイルをいつ提供するかをどのように認識しますか?
さまざまな理由から、CATiledLayerの独自の実装を検討しています。調査を行いましたが、CATiledLayerがどのタイルを提供するかをどのように認識しているかを理解できないようです。たとえば、レイヤーをスクロールすると、setPosition:またはsetBounds:が呼び出されることはありません。バックグラウンドスレッドがトリガーなしでデリゲートのdrawLayer:inContext:を呼び出しているように見えます。CATiledLayerが「CAImageProvider」のインスタンスを使用してsetContent:を呼び出し、drawLayer:inContext:へのすべての呼び出しがそのクラスから発生していることがわかりました。したがって、おそらくそれが、どのタイルを描画するかを決定する際の鍵となります。しかし、そのクラスに関するドキュメントは見つかりません。
だから...誰かがこれがどのように機能しているか、そして私がそれをどのようにオーバーライドできるか知っていますか?
CATiledLayerの欠点について:
- 常に画面解像度(またはx2、x4など)を使用します。ソース画像のネイティブ解像度に設定することはできません
- 2以外のスケーリング係数を指定することはできません
- levelOfDetailとlevelsOfDetailBiasを指定する必要がありますが、実装上の理由はまったくわかりません。フラクタルのように無限にスケーラブルなコンテンツがある場合、これは非常に制限されます。
- 最も重要なこと:一方向のみのズームに制限すると(setTransform :で一方向の倍率を1に強制することでこれを行います)、すべて奇妙に動作します