質問失礼します。
撮影した画像情報を元にAPI検索を行う画面を作成中なのですが、
カメラで撮影した写真を処理してpicker.dismissをした後にAPIから情報を取得するまで少し時間が掛かる為、
dismissで戻った画面にロード中のアニメーションを実装出来ないかと思い下記の様なコードを記載したのですが、
ロード中のアニメーションが表示されませんでした。
また、画面遷移をする際もSegueを利用した遷移遷移が出来ず、
ナビゲーションバーが途切れてしまい戻るボタンなどの表示が出来ておりません。
pickerの処理は通常のviewとは別扱いで仕様なのかなとも思うのですが、
picker.dismissの後にロードアニメーションやナビゲーションバーを表示する方法はあるでしょうか。
どなたかご教授いただけますと嬉しいです。
よろしくお願い致します。
Swift
1 let activityIndicator: UIActivityIndicatorView! 2 3 override func viewDidLoad() { 4 super.viewDidLoad() 5 6 // ActivityIndicatorを作成&中央に配置 7 activityIndicator = UIActivityIndicatorView() 8 activityIndicator.frame = CGRect(x: 0, y: 0, width: 50, height: 50) 9 activityIndicator.center = self.view.center 10 11 //Viewに追加 12 self.view.addSubview(activityIndicator) 13 } 14 15//写真を撮影した後 16 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { 17 18 if let pickedImage = info[.editedImage] as? UIImage { 19 20 //イメージをbase64にエンコードする 21 let imageData = pickedImage.pngData()! as NSData 22 let imageString = imageData.base64EncodedString(options: .lineLength64Characters) 23 //ピッカーを閉じる 24 picker.dismiss(animated: true, completion: nil) 25 26 *ロード中のアニメーションを開始したい* 27 activityIndicator.startAnimating() 28 29 //データをAPIから取得するメソッドを実行 30 var dataList = Util.returnData(image:imageString, completion: { 31 //結果を取得する 32 result in 33 34 *アニメーションを停止したい* 35 activityIndicator.stopAnimating() 36 37 *ストーリーボードIDを使用せずにナビゲーションバーを活かしたまま画面遷移したい* 38 let listVC = self.storyboard?.instantiateViewController(withIdentifier: "list") as! ListViewController 39 self.present(listVC, animated: true, completion: nil) 40 }) 41}
*追記*
コメントで記載していたactivityIndicatorが大きく表示されない件ですが、
私のコードミスが原因だったので改めて試したところ無事成功しました。
なのでactivityIndicatorの設定をこちらに記載しておきます。
Swift
1 var activityIndicator: UIActivityIndicatorView! 2 3 override func viewDidLoad() { 4 super.viewDidLoad() 5 6 // ActivityIndicatorを作成&中央に配置 7 activityIndicator = UIActivityIndicatorView() 8 //ここで指定するサイズはバックグラウンドのサイズ 9 activityIndicator.frame = CGRect(x: 0, y: 0, width: 80, height: 80) 10 activityIndicator.center = self.view.center 11 //デフォルトよりも大きいサイズのActivityIndicatorを表示する 12 activityIndicator.style = .large 13 //デザインの設定を行う 14 activityIndicator.backgroundColor = .white 15 activityIndicator.color = .gray 16 activityIndicator.layer.cornerRadius = 10 17 activityIndicator.alpha = 0.7 18 19 //アニメーションがストップしたら非表示にする 20 activityIndicator.hidesWhenStopped = true 21 22 //Viewに追加 23 self.view.addSubview(activityIndicator) 24 25 } 26コード
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/14 06:41
2020/05/14 06:49
2020/05/14 07:09
2020/05/14 07:14
2020/05/14 07:16
2020/05/14 08:04