問題タブ [photokit]

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.

0 投票する
1 に答える
592 参照

ios - CLLocationCoordinate2d の半径内の PHAssetCollections をフィルタリングします

Photos フレームワーク (aka PhotoKit) を使用しています。私のアプリでは、モーメント (タイプはPHAssetCollection) を収集する必要があります。PHAssetCollectionのプロパティがありCLLocation *approximateLocationます。

ただしNSPredicate、PhotoKit から Moments を取得すると、 が動作しません。

デバッガーが停止します

エラーで:

*** キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。理由: 'フェッチ オプションでサポートされていない述語:approximationLocation.coordinate.latitude < 37'

またはNSPredicateでフィルタリングするために使用できるため、これは奇妙に思えます。startDateendDate

NSPredicateとにかく、次にwith ブロックを試してみようと思いました:

再びデバッガは次の場所で停止します

別のエラー メッセージ:

*** キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。理由: 'フェッチ オプションでサポートされていない述語: BLOCKPREDICATE(0x27d338)'

最後に、距離によるフィルタリングの新しいサポートが追加されたことをCloudKit のドキュメントで読んだことを思い出しました。ただし、これは のためのものCKQueryであり、 ではありませんNSPredicate。とにかくやってみることにしました。座標を使用してCLLocationthen 呼び出しを行います。

当たってるよ。エラー:

それまでの間、 のリストを繰り返し処理し、PHAssetCollectionsの近くにあるかどうかを手動で計算しCLLocationます。これははるかに効率が悪いでしょう。

0 投票する
3 に答える
6407 参照

objective-c - Mac OS X 上のフォト ライブラリへのプログラムによるアクセス: Mac 用の PhotoKit / Photos フレームワーク

Objective-C には、iOS 開発者が iPhone や iPad の写真ライブラリにアクセスし、写真やビデオをメタデータと共に取得できるようにする、PhotoKit とも呼ばれる写真フレームワークがあります。

Mac 開発者は、同様のタスクをどのように実行しますか? PhotoKit は iOS 8.0 でしか利用できないようです。Mac OS X 用の Photos Framework に相当するものはありますか?

0 投票する
1 に答える
284 参照

ios - スクリーンショットを編集できない、performChanges ブロックが失敗する

ユーザーが PhotoKit を使用して写真を編集できるアプリを開発しています。以前は、編集した写真を JPEG としてディスクに保存していました。JPEG への変換を避けたいので、そのための変更を実装しました。カメラで撮影した写真には最適ですが、スクリーンショットを編集しようとすると、PHPhotoLibrary.sharedPhotoLibrary().performChangesブロックが失敗してログに記録されますThe operation couldn’t be completed. (Cocoa error -1.)。これが原因で performChanges ブロックが失敗する理由がわかりません。ここで何が間違っているのでしょうか?

問題を示すダウンロード可能なサンプル アプリを作成し、以下に関連するコードを含めました。アプリは、フォト ライブラリの最新の写真を編集しようとします。成功すると、写真を編集するためのアクセスを求められます。それ以外の場合は何も起こらず、コンソール ログが表示されます。問題を再現するには、スクリーンショットを撮り、アプリを実行します。

スクリーンショットで動作する現在のコード:

スクリーンショットが失敗する原因となる代替コード:

0 投票する
2 に答える
776 参照

ios - Photokit はユーザー アルバム リストの順序を保持します

ユーザーが写真アプリですべてのアルバムを並べたリストの順序を維持する方法はありますか? 私は一日中これを修正しようとしてきましたが、アプリで表示する順序を維持するために何が欠けているのかわかりません。

ユーザーは写真アプリでアルバムを並べ替えることができるため、順序を維持したいので、UI をリストの順序に一致させたいと考えています。

リストを設定するために使用しているコード:

0 投票する
1 に答える
4085 参照

ios - プライバシー許可の変更を検出する方法 (カメラへのアクセスなど)

私たちは皆そこにいました。アプリ内で写真を撮りたい、または写真、マイク、連絡先などにアクセスしたい...しかし、最初に iOS はユーザーに許可を求めるプロンプトを表示する必要があります。多くの場合、ユーザーはアクセスを拒否します。

ユーザーがアクセスを拒否したことをアプリが検出した場合は、次のようにしてユーザーをアプリのプライバシー設定に移動できます。

ハンディ。でも....

ユーザーにスイッチをオンに切り替えるよう説得しても、アプリは変更を検出しないことに気付きました。

このコードを検討してください。ユーザーは、カメラへのアクセス許可をすぐに求められます (これは、アプリが初めて実行されたときにのみ表示されます)。ユーザーが許可を拒否したとします。次に、最終的にカメラへのアクセスを有効にしたいと判断しました。問題ない。ユーザーがボタンをタップすると、プライバシー パネルが表示されます。ユーザーがスイッチを変更してアクセスを許可します。その後、ユーザーはアプリに戻ります。パーミッションを再度読み取る UIApplicationDidBecomeActiveNotification に対してブロックが起動します。ただし、ユーザーの変更は反映されません (依然として Denied として読み取られます)。

アプリがメモリから消去されて再度実行されると、状態が適切に読み取られます。

すべての権限がこのように動作するわけではありません。たとえば、CoreLocation はユーザーの変更を検出しているようです。通知の変更を検出する方法も見つけました。ただし、連絡先、カレンダー、カメラ、マイク、Core Motion (その他) については、アプリを終了して再度実行するまで、変更は検出されません。

何か案は?