問題タブ [photosframework]
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 - iPhone : 写真フレームワーク : 他のアプリではなく自分のアプリで作成されたアルバム/画像のみを取得する方法は?
写真アプリのようなアプリケーションを作成しています。私のアプリケーションは、アルバムを作成して画像をキャプチャし、写真アプリのアルバムに保存します。このために、私は Photos フレームワークを使用しています。アルバムを取得すると、自分のアプリや他のアプリで作成されたアルバムが表示されます。したがって、他のアプリではなく、自分のアプリでのみ作成されたアルバム/画像のみが必要です。
ios - Messages.app のように、画像の縦横比を維持しながら、UICollectionView を使用して iOS 8 の Photos フレームワークを適切に使用するにはどうすればよいですか?
Apple が Messages.app に持っているものと同様の外観を作成したいと考えています。そこでは、画像の水平方向のスライド ビューがあります。

iOS 8 でこれを行う最善の方法は、新しい Photos フレームワークを使用することであり、おそらく水平方向のUICollectionView.
ビューコントローラーのストーリーボードで設定した高さにUICollectionView固定し、上から配置してから、次のviewDidLoadように記述します。
recentlyAddedFetchResultビューコントローラーのインスタンス変数はどこにありますか。
次に、自動レイアウトでセルの端にピン留めされたカスタムUICollectionViewCellサブクラスを作成しました。UIImageView
私が持っているUICollectionViewDataSource方法では:
ただし、実装する必要があることは理解していますがsizeForItem、それを処理する方法がわかりません。私が思いついた最善の方法は、上記のフェッチを再度実行することでしたが、比率が必要なだけなので画像サイズを小さくし、それに基づいてサイズを返しました。しかし、フェッチは非同期なので、保存して後で返す必要がありますよね?
私は次のようにそれを試しました:
しかし、コンソールは次のメッセージの無限ループでいっぱいになります。
アイテムの高さは、UICollectionView の高さからセクション インセットの上下の値を引いた値よりも小さくする必要があります。
しかし、そうです。コレクション ビューは高さ 150 で、セクション インセットはありません。キャッシュを削除しても、それについて文句を言うたびに 140x140 が返されます。なんで?約 70x70 に下げると問題なく動作しますが、その理由はわかりません。
その上、スクローラーの最初の 2 つの画像が最初の読み込みで表示されることはめったになく、一度スクロールすると表示されます。
ここで何が間違っていますか?新しいフォト フレームワークに関するチュートリアルはほとんどないため、最善を尽くしても、何が間違っているのかわかりません。
ios - PHAsset fetchAssetsWithOptions がすべてのアセットを返さないのはなぜですか?
マイ フォト ストリームには 75 枚の写真があり、カメラ ロールには 1 枚の写真があります (マイ フォト ストリームにはありません)。全部で76枚の写真があります。ただし、次のコードでは 51 枚の写真しか返されません。
知っている:
このメソッドが iOS 8.1 以降にリンクされたアプリによって呼び出された場合、結果には iTunes からデバイスに同期された写真や iCloud 共有フォト ストリームに保存された写真は含まれません。
しかし、上記の写真はいずれも iCloud Shared Photo Stream のものではありません。
ios8 - iOS 8 フォト ライブラリ -- PHAssetChangeRequest を使用してアセットを追加するとエラーが発生する
を使用して写真アセットを作成しようとすると、「操作は許可されていません」というエラーが表示されます[PHAssetChangeRequest creationReqeustForAssetFromImageAtFileURL:]。最初の写真へのパス名を取得して、フォト ライブラリから別の写真をコピーしようとしています。
エミュレーターで実行すると関数は期待どおりに動作しますが、実際のデバイスで実行すると失敗します。エミュレーターとデバイスはすべて iOS 8.3 を実行しています。iPad は写真を iCloud に保存するように設定されていますが、エミュレータはそうではありません。
私のコードスニペット
currentImagePathから来て、コピーしようとしている写真の[PHImageManager requesstImageDataForAsset:]アセットを提供します。実際の iPad で実行すると、パスは次のようになります。
エミュレータで実行すると、次のようになります。
次の作成リクエストでエラーが発生しました:
エラーメッセージ
ファイルからデータを作成できません エラー Domain=NSCocoaErrorDomain Code=257 「操作を完了できませんでした。(Cocoa エラー 257.)」 UserInfo=0x17046ac40 {NSFilePath=/var/mobile/Media/DCIM/100APPLE/IMG_0042.JPG, NSUnderlyingError=0x1702480a0 "操作を完了できませんでした。操作は許可されていません"}
興味深いことに、関数で UIImage* を使用すると、作成リクエストはすべてのプラットフォームで成功します[PHAssetChangeRequest creationReqeustForAssetFromImage:]。
誰かが何が起こっているのか説明していただければ幸いです。クラウドに写真を保存することと関係がありますか? iPad で写真の iCloud をオフにしようとしましたが、それでも同じ動作になります。
ios - 幅が固定で高さが可変の PHImageManager を使用する場合の低解像度画像
Photos Frameworkを使用して、ユーザー定義のパラメーターに従って UIImageView に画像を表示するように要求しています。
私は基本的にこのコードを使用しています:
ユーザーは、"fit-width" または "fit-height" オプションを選択できます。「フィット幅」では、次を使用します。
「フィットハイト」では、次を使用します。
とはwidth、heightUIImageView の寸法から動的に取得されます。私の考えでは、PHImageManagerMaximumSize固定されていない次元で を使用するPHImageContentMode.AspectFillことcontentModeで、UIImageView に収まる最大の画像を取得できます。
「フィット幅」オプション:
「フィット高さ」オプション:
問題は最初のケースで発生します。「fit-width」オプションを使用すると、非常に低解像度の画像が表示されます。
私は何か間違ったことをしていますか、それとも PHImageManager の問題ですか?