タグ付けされた質問 「swift」

Swiftは、Apple Inc.が自社のプラットフォームとLinux用に開発した、安全で高速、かつ表現力豊かな汎用プログラミング言語です。Swiftはオープンソースです。このタグは、言語機能に関する質問、またはSwiftのコードが必要な場合にのみ使用してください。プラットフォームまたはフレームワークに関する(言語に依存しない)質問には、タグ[ios]、[ipados]、[macos]、[watch-os]、[tvos]、[cocoa-touch]、および[cocoa]を使用します。

1
継続的な位置更新の背景iOS13
現在、iOS 13でバックグラウンドロケーションモードをテストしています。ユーザーのロケーションとモーション(CMMotionManagerを使用)をバックグラウンドで追跡したいからです。そのため、位置追跡を処理する独自の(シングルトン)クラスがあります。CLLocationManagerを次のように初期化します。 func initializeLocationManager() -> CLLocationManager { let manager = locationManager ?? CLLocationManager() manager.delegate = self manager.requestAlwaysAuthorization() manager.allowsBackgroundLocationUpdates = true manager.pausesLocationUpdatesAutomatically = false manager.distanceFilter = kCLDistanceFilterNone manager.desiredAccuracy = kCLLocationAccuracyBest manager.activityType = .other return manager } 次に、次のサービスを開始します。 func startLocationServices() { // ... locationManager.startUpdatingLocation() locationManager.startMonitoringVisits() locationManager.startMonitoringSignificantLocationChanges() // ... } さらに、CLLocationManagerDelegate-methods didChangeAuthorization()、didUpdateLocation()を実装しました。 info.plist-fileに次のエントリを追加しました。 …

1
WKWebView-ユーザーのテキスト選択によってトリガーされる自動スクロールを防止
ユーザーがタップアンドホールドジェスチャを実行して単語を選択し、指を画面の上端または下端のいずれかにドラッグすると、選択に対応するためにページが自動的にスクロールします。 ここにそれを示す短いクリップがあります 内でこの動作を防止したいと思いWKWebViewます。 これが私がこれまでに試したことです: 内bridge.jsのWebViewにアクセス可能なファイル: var shouldAllowScrolling = true; document.addEventListener('selectionchange', e => { shouldAllowScrolling = getSelectedText().length === 0; window.webkit.messageHandlers.selectionChangeHandler.postMessage( { shouldAllowScrolling: shouldAllowScrolling }); console.log('allow scrolling = ', shouldAllowScrolling); }); そしてWKScriptMessageHandler実装では: public func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { switch message.name { case "selectionChangeHandler": let params = paramsDictionary(fromMessageBody: message.body) let …

3
カメラロールのビデオの絶対URIを取得して、アプリから変更できますか?
iphoneカメラロールでビデオの操作を実行したいのですが、アプリ内でffmpegをネイティブで使用するため、絶対URIが必要です。 その場でビデオを操作することは可能ですか?または、ビデオをtmpディレクトリにコピーして操作し、カメラロールに書き戻す必要がありますか?

5
ビューをクリックするとナビゲーションバーが表示される
問題のビデオを添付します。ビューコントローラーのナビゲーションバーのどこかをクリックすると、 override func viewWillAppear(_ animated: Bool) { self.navigationController?.setNavigationBarHidden(true, animated: true) self.navigationController?.isNavigationBarHidden = true self.navigationController?.hidesBarsOnTap = true } 上記のコードは、viewに追加すると最初は機能しているように見えますが、画面のどこかをクリックすると、ナビゲーションバーが表示されます。

2
代わりに「NSSecureUnarchiveFromData」またはNSSecureUnarchiveFromDataTransformerのサブクラスを使用するコアデータエラースイッチ
このCoreDataエラーが発生します。このエラーが発生する理由はわかりません。Transformable型は使用していません。変換可能なプロパティを使用していることを示すコードが何も表示されません。プロジェクトの作成時に[コアデータを使用]オプションを選択して、XcodeにCoreDataをセットアップさせました。他の同様の質問は役に立ちません。答えは、プロジェクトの作成時にXcodeが作成されたことがわかるようなコードに関係しているためです。このエラーがデバッグウィンドウに表示されても、プロジェクトはクラッシュしません。Xcode 11.3とiOS用のGoogle Maps SDK for iOS 12を使用していますが、iOS 13.3を搭載したiPhone 8デバイスで実行されています。 CoreData: annotation: Failed to load optimized model at path '/var/containers/Bundle/Application/A2B8A56C-E0D5-467A-9300-8EDFB20574BE/Routes.app/GoogleMaps.bundle/GMSCacheStorage.momd/StorageWithTileProto.omo' 2020-01-13 12:42:00.771883-0600 Routes[4631:1067373] [error] fault: One or more models in this application are using transformable properties with transformer names that are either unset, or set to NSKeyedUnarchiveFromDataTransformerName. Please switch to using …

6
結合フレームワークは非同期操作をシリアル化します
Combineフレームワークを構成する非同期パイプラインを同期的に(シリアルに)整列させるにはどうすればよいですか? 対応するリソースをダウンロードするURLが50個あるとします。一度に1つずつダウンロードするとします。私はOperation / OperationQueueでそれを行う方法を知っています。たとえば、ダウンロードが完了するまでそれ自体の終了を宣言しないOperationサブクラスを使用します。Combineを使用して同じことをするにはどうすればよいですか? 現時点で私に発生するのは、残りのURLのグローバルリストを保持し、1つをポップし、1つのダウンロード用にその1つのパイプラインを設定し、ダウンロードを実行しsink、パイプラインので繰り返します。これはCombineのようには見えません。 私はURLの配列を作成し、それをパブリッシャーの配列にマッピングしようとしました。パブリッシャーを "作成"して、を使用してパイプラインの下にパブリッシュさせることができることを知っていflatMapます。しかし、それでも私はまだすべてのダウンロードを同時に行っています。制御された方法でアレイをウォークするCombineの方法はありません—またはありますか? (Futureで何かをすることも想像していましたが、どうしようもなく混乱しました。この考え方には慣れていません。)
8 ios  swift  combine 

2
エラー「[ShareSheet]接続が無効になりました」エラーiOS13 +(iOS 11.4ではない)
共有シートを使用してファイルを共有したいのですが、問題なく動作するように見えるコードを記述しました。ただし、ログにこれらのエラーメッセージが表示され続けます(Xcode 11.3を使用) [ShareSheet] connection invalidated 私がテストしている2つの物理デバイスがあります。iOS 13.1.2を実行しているiPadと11.4を実行しているiPhone 6。古いiOSがインストールされているiPhoneにはこれらのメッセージは表示されません。どちらの場合も、共有はうまく機能しているようです。ファイルの代わりにテキストを使用して使用しているコードは次のとおりです。 let activityViewController = UIActivityViewController(activityItems: ["simple text for test"], applicationActivities: nil) activityViewController.excludedActivityTypes = [.message, .airDrop] activityViewController.popoverPresentationController?.barButtonItem = myBarButtonItem self.present(activityViewController, animated: true, completion: nil) 共有シートが消えると、メッセージが表示されます(ユーザーがアクションを完了するか、ユーザーがアクションの外側をタップしてキャンセルしたため)。 これらのメッセージを無視しても安全ですか?古いOSでは表示されず、新しいOSでは表示されるのは奇妙です。 2020年3月20日に編集:有効なソースまたはbarButtonItemを提供していることを確認しました。UIBarButtonItemを使用しているコードと一致するようにコードを変更しましたが、ShareSheet接続無効化エラーが引き続き表示されます。

1
セルが表示されているときにカルーセルでビデオを再生する
私はこれに似たものを持っています: ご覧のとおり、テーブルビューがあり、各テーブルビューセルにコレクションビューがあります。コレクションビューは水平(カルーセルを複製するため)なので、ユーザーは画像やビデオのギャラリーをスワイプできます。これを描く別の方法は次のとおりです。 コントローラー->テーブルビュー->テーブルビューセル->コレクションビュー(カルーセル)->コレクションビューセル(カルーセル画像/ビデオ) 私が達成しようとしているのは、ユーザーがテーブルビューをスクロールすると、カルーセル内のビデオが自動的に再生されるようにすることです。もちろん、それを実現するには、次のことを行う必要があります。 コレクションビューが画面に表示されているかどうかを確認します。 表示されているコレクションビューのセルがビデオであるかどうかを確認します(コレクションビューのすべてのセルがビデオではなく、一部は画像です)。 2つの別々のテーブルビューセルにある2つのビデオが同時に再生されていないことを確認します。最初に表示されるテーブルビューセルのみに再生ビデオが必要です。 ただし、これは言うより簡単です。私がしている、以前に尋ねた私は今それを行う方法を知っているので、ビューが画面上に表示されているかどうかを判断する方法。 私の質問は、コードをどのように構造化すべきかを中心に展開しています。 私のコントローラークラスには、次のものがあります。 func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { isCollectionViewVisible() } func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { if (!decelerate) { isCollectionViewVisible() } } func isCollectionViewVisible() { for visibleCell in self.tableView.visibleCells { guard let cell = visibleCell as? MyTableViewCell else { continue } …
8 ios  swift  xcode  swift4  swift5 

1
S3バケットにアップロードされたビデオ、iOSアプリのURLで再生されない
(AWS SDKを使用せずに)s3サービスへの投稿リクエストを介してS3バケットにビデオと画像をアップロードしています。画像と動画が正常にアップロードされました。しかし、ビデオはそのURLから再生されていません。 以下は、コンソールに出力されるエラーです。 エラードメイン= NSURLErrorDomainコード= -999 "キャンセル" UserInfo = {NSErrorFailingURLStringKey = https:// s3url } 以下は、私が使用しているマルチパートリクエストのコードです。 Alamofire.upload(multipartFormData: { (multiPart) in if parameters != nil { for (key, value) in parameters! { multiPart.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key) } } print("mime type ==================>\(mimeType)") //mime type for video: "video/mp4" multiPart.append(file, withName: key, fileName: …

2
削除されたコアデータオブジェクトへの参照を保持しているSwiftUIがクラッシュの原因
SwiftUIでコアデータを使用することは不可能であることがわかりました。コアデータをビューの監視対象オブジェクト変数に渡すと、ナビゲーションリンクビューはビューが消えた後もオブジェクトへの参照を保持するため、削除するとすぐにエラーメッセージなしで、アプリがクラッシュするコンテキストのオブジェクト。 コアデータオブジェクト変数をオプションとしてビューモデルにラップし、コンテキスト削除アクションの直後にオブジェクトをnilに設定してアプリが正常に動作することでこれを確認しましたが、コアデータオブジェクトが必要なため、これは解決策ではありません迅速なuiビューにバインドし、真実のソースになります。これはどのように機能すると想定されていますか?SwiftUIを使用してリモートで複雑なことを真剣に行うことはできないようです。 渡されたコアデータオブジェクトをオプションの@Stateに割り当てようとしましたが、これは機能しません。@Bindingはフェッチされたオブジェクトなので使用できません。また、swiftuiコントロールにはバインディングが必要なため、変数を使用できません。@ObservedObjectを使用することは意味がありますが、これはオプションにすることはできません。つまり、それに割り当てられたオブジェクトが削除されると、アプリがクラッシュします。これをnilに設定できないためです。 これがコアデータオブジェクトです。これはデフォルトで監視可能なオブジェクトです。 class Entry: NSManagedObject, Identifiable { @NSManaged public var date: Date } 以下は、コアデータエントリオブジェクトを別のビューに渡すビューです。 struct JournalView: View { @Environment(\.managedObjectContext) private var context @FetchRequest( entity: Entry.entity(), sortDescriptors: [], predicate: nil, animation: .default ) var entries: FetchedResults<Entry> var body: some View { NavigationView { List { ForEach(entries.indices) { index in …
8 ios  swift  swiftui 

1
iOS 13 Instagramのみの写真共有が機能しない
iOS 12.4までは、Instagramフィードへの写真共有の実装(ドキュメントに従って)は適切に機能しましたが、iOS 13以降は機能しません。 現在の実装では- UIDocumentInteractionControllerのUTIはに設定され"com.instagram.exclusivegram"、ファイル拡張子は.igo-に設定されています。Instagramの共有オプションはまったく表示されません。ファイル拡張子をに変更する.igと、候補の中にInstagram共有オプションが表示されます。この方法でフィードを共有すると機能しますが、これは期待されるInstagramのみのソリューションではありません。 UTIをに設定し"com.instagram.photo"ても何も変わりません。 予想される動作は、追加の手順を実行せずに、「共有」ボタンを押したときに下に表示されるビューを表示することです。それはInstagramのバグでしょうか、それともiOS 13に実装する他の方法がありますか?

2
Swift Frameworkがlldbのメソッド拡張の「あいまいな使用」を返す
Xcode 11とSwift 5にアップグレードし、メソッド拡張機能がフレームワークを介して利用可能になると、問題が発生しました。より具体的には、次のような構造のプロジェクトで: -> Main Project -> Framework created from sources in 'Main Project' -> Subproject using the above Framework (Sources packaged in the framework are not visible to the sub-project) すべてが正常にコンパイルおよび実行されますが、サブプロジェクトでデバッグセッションを実行するerror: ambiguous use of場合、lldbコマンドラインから呼び出されると、「フレームワーク」のすべての拡張機能が返されます。これはアイデアを与えるためのコードサンプルです: macOsコマンドラインプロジェクトを作成し、新しいターゲット 'MagicFramework'をSpells.swiftファイルに追加します(ファイルがMain&MagicFrameworkに表示されることを確認してください) import Foundation extension String { public func castSpell() -> String { return "✨ …

1
SwiftUI Pickerの選択が変更されたときに関数を呼び出す方法はありますか?
selectedOptionの値が変更されたときに関数を呼び出したいのですが。TextFieldを編集する場合と同様に、SwiftUIでこれを行う方法はありますか? 具体的には、ユーザーがselectedOptionを変更したときに、選択したオプションを保存します。 これが私のピッカーです: struct BuilderPicker: View { let name: String let options: Array<String> @State var selectedOption = 0 var body: some View { HStack { Text(name) .font(.body) .padding(.leading, 10) Picker(selection: $selectedOption, label: Text(name)) { ForEach(0 ..< options.count) { Text(self.options[$0]).tag($0) } }.pickerStyle(SegmentedPickerStyle()) .padding(.trailing, 25) }.onTapGesture { self.selectedOption = self.selectedOption == 0 …

1
UITextView-SwiftUIのコンテンツに基づいてサイズを調整します
UITextViewのサイズをSwiftUIのコンテンツに依存させる方法を理解しようとしています。私UIViewRepresentableは次のようにUITextViewをラップしました: struct TextView: UIViewRepresentable { @Binding var showActionSheet: Bool func makeCoordinator() -> Coordinator { Coordinator(self) } func makeUIView(context: Context) -> UITextView { let uiTextView = UITextView() uiTextView.delegate = context.coordinator uiTextView.font = UIFont(name: "HelveticaNeue", size: 15) uiTextView.isScrollEnabled = true uiTextView.isEditable = true uiTextView.isUserInteractionEnabled = true uiTextView.backgroundColor = UIColor(white: 0.0, alpha: 0.05) …

2
SwiftUI .rotationEffect()のフレーミングとオフセット
.rotationEffect()をテキストに適用すると、期待どおりにテキストが回転しますが、フレームは変更されません。これは、HStackのVStackのように、回転されたビューを回転されていないビューとスタックするときに問題になり、それらがオーバーラップします。 最初に、rotationEffectはテキストのフレームを垂直に更新するだけだと思っていましたが、そうではありません。 私は手動でフレームサイズと(必要に応じてオフセットする)テキストを設定してみましたが、これは一種の動作ですが、テキストが表示される場所や大きさを推測および確認する必要があるため、このソリューションは好きではありませんフレームなど これは回転されたテキストがどのように行われるか、またはこれに対するよりエレガントな解決策はありますか? struct TextAloneView: View { var body: some View { VStack { Text("Horizontal text") Text("Vertical text").rotationEffect(.degrees(-90)) } } } 重複するテキスト
8 swift  swiftui 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.