teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

修正

2016/07/26 07:07

投稿

gami
gami

スコア17

title CHANGED
File without changes
body CHANGED
@@ -22,7 +22,6 @@
22
22
  var photoImages = [UIImage?]()
23
23
  var photoCounts:Int = 0
24
24
  var collectionView:UICollectionView!
25
- var requestId: PHImageRequestID!
26
25
 
27
26
  override func viewDidLoad() {
28
27
  super.viewDidLoad()
@@ -63,7 +62,7 @@
63
62
  NSSortDescriptor(key: "creationDate", ascending: false)
64
63
  ]
65
64
 
66
- // 画像すべてのAssetを取得
65
+ // 画像すべてのAssetを取得
67
66
  let assets: PHFetchResult = PHAsset.fetchAssetsWithMediaType(.Image, options: options)
68
67
  assets.enumerateObjectsUsingBlock { (asset, index, stop) -> Void in
69
68
  self.photoAssets.append(asset as! PHAsset)
@@ -94,15 +93,7 @@
94
93
  for subview in cell.contentView.subviews{
95
94
  subview.removeFromSuperview()
96
95
  }
97
-
98
-
99
- if let request = requestId{
100
- manager.cancelImageRequest(request)
101
- }
102
-
103
-
104
-
105
- self.requestId = manager.requestImageForAsset(asset,
96
+ manager.requestImageForAsset(asset,
106
97
  targetSize: CGSizeMake(CGFloat(asset.pixelWidth) , CGFloat(asset.pixelHeight) ),
107
98
  contentMode: .AspectFill,
108
99
  options: nil) { (image, info) -> Void in

3

ミス修正

2016/07/26 07:07

投稿

gami
gami

スコア17

title CHANGED
File without changes
body CHANGED
@@ -22,7 +22,7 @@
22
22
  var photoImages = [UIImage?]()
23
23
  var photoCounts:Int = 0
24
24
  var collectionView:UICollectionView!
25
- var imageRequests = [NSIndexPath: PHImageRequestID]()
25
+ var requestId: PHImageRequestID!
26
26
 
27
27
  override func viewDidLoad() {
28
28
  super.viewDidLoad()
@@ -96,18 +96,18 @@
96
96
  }
97
97
 
98
98
 
99
- if let request = imageRequests[indexPath]{
99
+ if let request = requestId{
100
100
  manager.cancelImageRequest(request)
101
101
  }
102
102
 
103
103
 
104
+
104
- manager.requestImageForAsset(asset,
105
+ self.requestId = manager.requestImageForAsset(asset,
105
106
  targetSize: CGSizeMake(CGFloat(asset.pixelWidth) , CGFloat(asset.pixelHeight) ),
106
107
  contentMode: .AspectFill,
107
108
  options: nil) { (image, info) -> Void in
108
109
  photo = image!
109
110
  }
110
-
111
111
 
112
112
  let imageview:UIImageView=UIImageView(frame: CGRectMake(1, 1, (self.view.bounds.width / 4) - 2, (self.view.bounds.width / 4) - 2 ))
113
113
  imageview.image = photo

2

cancelImageRequestの呼び出しを追記

2016/07/26 05:36

投稿

gami
gami

スコア17

title CHANGED
File without changes
body CHANGED
@@ -22,6 +22,7 @@
22
22
  var photoImages = [UIImage?]()
23
23
  var photoCounts:Int = 0
24
24
  var collectionView:UICollectionView!
25
+ var imageRequests = [NSIndexPath: PHImageRequestID]()
25
26
 
26
27
  override func viewDidLoad() {
27
28
  super.viewDidLoad()
@@ -84,25 +85,30 @@
84
85
  let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as UICollectionViewCell
85
86
 
86
87
  cell.backgroundColor = UIColor.brownColor()
88
+ //PHAseetから画像取得のリクエストを投げてcellにセット
89
+ let asset = photoAssets[indexPath.row]
90
+ var photo: UIImage?
91
+ let manager: PHImageManager = PHImageManager()
87
92
 
93
+
88
94
  for subview in cell.contentView.subviews{
89
95
  subview.removeFromSuperview()
90
96
  }
91
97
 
92
- //PHAseetから画像取得のリクエストを投げてcellにセット
98
+
93
- let asset = photoAssets[indexPath.row]
99
+ if let request = imageRequests[indexPath]{
94
- var photo: UIImage?
95
- let manager: PHImageManager = PHImageManager()
100
+ manager.cancelImageRequest(request)
101
+ }
102
+
96
103
 
97
104
  manager.requestImageForAsset(asset,
98
105
  targetSize: CGSizeMake(CGFloat(asset.pixelWidth) , CGFloat(asset.pixelHeight) ),
99
106
  contentMode: .AspectFill,
100
107
  options: nil) { (image, info) -> Void in
101
-
102
108
  photo = image!
103
109
  }
110
+
104
111
 
105
-
106
112
  let imageview:UIImageView=UIImageView(frame: CGRectMake(1, 1, (self.view.bounds.width / 4) - 2, (self.view.bounds.width / 4) - 2 ))
107
113
  imageview.image = photo
108
114
  imageview.contentMode = .Center
@@ -110,6 +116,7 @@
110
116
  cell.contentView.addSubview(imageview)
111
117
 
112
118
  return cell
119
+
113
120
  }
114
121
  }
115
122
  ```

1

小修正

2016/07/26 02:16

投稿

gami
gami

スコア17

title CHANGED
@@ -1,1 +1,1 @@
1
- UICollectionView、PHAssetを使ったカメラロールの表示
1
+ UICollectionViewを使ったカメラロールの表示 スクロールでmemory warningが起きる
body CHANGED
@@ -1,13 +1,12 @@
1
1
  ###前提・実現したいこと
2
2
  [iOS swift]UICollectionView、PHAssetを使ったカメラロールの表示
3
- PHImageManager
3
+ セルにカメラロールの画像を入れこむことは下記のコードで実現できたのですが、メモリの解放がうまくできません。
4
4
 
5
5
  ###発生している問題・エラーメッセージ
6
6
  画像が1000枚程度カメラロールにあり、初期表示は問題ないが素早くスクロールをするとアプリケーションが落ちてしまします。
7
- ・セルを表示するタイミングでPHImageManagerのリクエストを投げているから。
8
- ・画像をメモリから消してないから。
9
- かと思ったのですが、うまい表示の方法等ご教授いただけたらと思います。
7
+ 正しい表示の方法、メモリの解放等ご教授いただけたらと思います。
10
8
  よろしくお願いします。
9
+
11
10
  ```
12
11
  Received memory warning.
13
12
  ```