質問編集履歴

1

追記を追加

2018/05/01 13:24

投稿

kimkim
kimkim

スコア142

test CHANGED
File without changes
test CHANGED
@@ -165,3 +165,125 @@
165
165
  ### 参考にしたサイト
166
166
 
167
167
  [https://qiita.com/tetsufe/items/9ff5fe190ee190afa1bb](https://qiita.com/tetsufe/items/9ff5fe190ee190afa1bb)
168
+
169
+
170
+
171
+ ### 追記
172
+
173
+ ```Swift
174
+
175
+ //PhotoLibraryManager.swift
176
+
177
+ import Photos
178
+
179
+
180
+
181
+ struct PhotoLibraryManager{
182
+
183
+
184
+
185
+ var parentViewController : UIViewController!
186
+
187
+
188
+
189
+ init(parentViewController: UIViewController){
190
+
191
+ self.parentViewController = parentViewController
192
+
193
+ }
194
+
195
+
196
+
197
+ // 写真へのアクセスがOFFのときに使うメソッド
198
+
199
+ func requestAuthorizationOn(){
200
+
201
+ // authorization
202
+
203
+ let status = PHPhotoLibrary.authorizationStatus()
204
+
205
+
206
+
207
+ if (status == PHAuthorizationStatus.denied) {
208
+
209
+
210
+
211
+ //アラートビューで設定変更するかしないかを聞く
212
+
213
+ let alert = UIAlertController(title: "写真へのアクセスを許可",
214
+
215
+ message: "写真へのアクセスを許可する必要があります。設定を変更してください。",
216
+
217
+ preferredStyle: .alert)
218
+
219
+ let settingsAction = UIAlertAction(title: "設定変更", style: .default) { (_) -> Void in
220
+
221
+ guard let _ = URL(string: UIApplicationOpenSettingsURLString ) else {
222
+
223
+ return
224
+
225
+ }
226
+
227
+ }
228
+
229
+ alert.addAction(settingsAction)
230
+
231
+ alert.addAction(UIAlertAction(title: "キャンセル", style: .cancel) { _ in
232
+
233
+ // ダイアログがキャンセルされた。つまりアクセス許可は得られない。
234
+
235
+ })
236
+
237
+ self.parentViewController.present(alert, animated: true)
238
+
239
+ }
240
+
241
+ }
242
+
243
+
244
+
245
+ func callPhotoLibrary(){
246
+
247
+ //権限の確認
248
+
249
+ requestAuthorizationOn()
250
+
251
+
252
+
253
+ if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary) {
254
+
255
+ let picker = UIImagePickerController()
256
+
257
+ /*
258
+
259
+ picker.modalPresentationStyle = UIModalPresentationStyle.popover
260
+
261
+ picker.delegate = self.parentViewController as? UIImagePickerControllerDelegate & UINavigationControllerDelegate
262
+
263
+ picker.sourceType = UIImagePickerControllerSourceType.photoLibrary
264
+
265
+
266
+
267
+ if let popover = picker.popoverPresentationController {
268
+
269
+ popover.sourceView = self.parentViewController.view
270
+
271
+ popover.sourceRect = self.parentViewController.view.frame
272
+
273
+ // ポップオーバーの表示元となるエリア
274
+
275
+ popover.permittedArrowDirections = UIPopoverArrowDirection.any
276
+
277
+ }*/
278
+
279
+ self.parentViewController.present(picker, animated: true, completion: nil)
280
+
281
+ }
282
+
283
+ }
284
+
285
+ }
286
+
287
+ ```
288
+
289
+ PhotoLibraryManager.swiftをこのようにした結果フォトライブラリーは開くようになりました。