質問編集履歴
4
修正
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
|
-
// 画像
|
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
|
-
|
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
ミス修正
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
|
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 =
|
99
|
+
if let request = requestId{
|
100
100
|
manager.cancelImageRequest(request)
|
101
101
|
}
|
102
102
|
|
103
103
|
|
104
|
+
|
104
|
-
|
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の呼び出しを追記
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
|
-
|
98
|
+
|
93
|
-
let
|
99
|
+
if let request = imageRequests[indexPath]{
|
94
|
-
var photo: UIImage?
|
95
|
-
|
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
小修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
UICollectionView
|
1
|
+
UICollectionViewを使ったカメラロールの表示 スクロールでmemory warningが起きる
|
body
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
###前提・実現したいこと
|
2
2
|
[iOS swift]UICollectionView、PHAssetを使ったカメラロールの表示
|
3
|
-
|
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
|
```
|