Po aktualizacji do iOS 11, aktywa zdjęcia teraz załadować powoli, a ja ten komunikat w konsoli:iOS 11: [ImageManager] Nie można załadować danych obrazowych
[ImageManager] Nie można załadować danych obrazowych, /var/mobile/media/DCIM/103APPLE/IMG_3064.JPG
używam funkcję statycznego, aby załadować obraz:
class func getAssetImage(asset: PHAsset, size: CGSize = CGSize.zero) -> UIImage? {
let manager = PHImageManager.default()
let option = PHImageRequestOptions()
option.isSynchronous = true
var assetImage: UIImage!
var scaleSize = size
if size == CGSize.zero {
scaleSize = CGSize(width: asset.pixelWidth, height: asset.pixelHeight)
}
manager.requestImage(for: asset, targetSize: scaleSize, contentMode: .aspectFit, options: option) { (image, nil) in
if let image = image {
assetImage = image
}
}
if assetImage == nil {
manager.requestImageData(for: asset, options: option, resultHandler: { (data, _, orientation, _) in
if let data = data {
if let image = UIImage.init(data: data) {
assetImage = image
}
}
})
}
return assetImage
}
Prześlij zdjęcie aktywów zwykle zawsze się powiedzie, ale drukuje tę wiadomość. Jeśli używam tylko funkcji requestImageData, nie ma takiej wiadomości, ale zdjęcia zrobione kamerą Apple tracą orientację, a podczas ładowania dużej ilości zdjęć uzyskuję jeszcze więcej problemów (korzystam z pokazu slajdów w mojej aplikacji).
Apple zawsze jest do bani, jeśli chodzi o aktualizacje, może ktoś ma rozwiązanie, jak to naprawić? Nie można nawet załadować zasobu, gdy istnieje duża lista z nich w kamerze użytkownika. Przełączenie na requestImageData nie jest dla mnie opcją, ponieważ często dostarcza teraz dane zerowe.
Chciałbym podkreślić, że tę funkcję nazywam tylko raz. Nie jest on używany w UITableView itp. Używam innego kodu dla kciuków z zainicjowanym globalnie menedżerem i opcjami, więc zasoby zdecydowanie nie są zerowe lub itp. Ta funkcja jest wywoływana tylko wtedy, gdy użytkownik kliknie na określony kciuk. Gdy galeria ma 5000 zdjęć, może połączenie z zasobami jest po prostu przeciążone, a później nie może obsłużyć żądania i awarii? Tyle pytań.
widzę ten sam problem, ponieważ uaktualnienie do iOS 11. Gdybym zażądać wystarczająco mały rozmiar (256 x 256) do miniaturek, wszystkie one obciążenia. Kiedy używam tego samego kodu dla większego rozmiaru, to zawiedzie on o około 20%. Nie znalazłem jeszcze żadnego wzoru. – user1055568
Czy znalazłeś poprawkę? – kye
Niezupełnie, ostrzeżenie jest nadal trwałe. –