Posts

Post not yet marked as solved
2 Replies
439 Views
From IOS 17. Have an issue when saving video and reading it from PHPickerViewController. Video become into jpeg file Code save video and I saw reason because i changed creationDate. But IOS 16 no bug here doVertifyAccessAblum() { DispatchQueue.global(qos: .background).async { if let url = URL(string: videoURL), let urlData = NSData(contentsOf: url) { let galleryPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]; let filePath="\(galleryPath)/\(url.lastPathComponent).mp4" DispatchQueue.main.async { urlData.write(toFile: filePath, atomically: true) PHPhotoLibrary.shared().performChanges({ let changeRequest = PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: URL(fileURLWithPath: filePath)) changeRequest?.creationDate = Date() }) { success, error in LOGGING.debug("Save video with status: success=\(success) error=\(String(describing: error))") } } } } } }
Posted Last updated
.
Post not yet marked as solved
1 Replies
340 Views
I used clustering annotations for display issues. But I meet problem when my data gradually increase, detail: I load annotation with my custom UIImageView and load Image from network to put into UIImageView When 1k images => it no lagging from here. But when reach 10k images => view meet lagging. Have any solution for big data on MKMapView? Here is my code for annotation example class PhotoAnnotationView: MKAnnotationView { private var imageView = UIImageView() override init(annotation: MKAnnotation?, reuseIdentifier: String?) { super.init(annotation: annotation, reuseIdentifier: reuseIdentifier) self.frame = CGRect(x: 0, y: 0, width: 50, height: 50) self.imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 50, height: 50)) self.addSubview(self.imageView) self.imageView.layer.cornerRadius = 5.0 self.imageView.layer.masksToBounds = true self.canShowCallout = false self.clusteringIdentifier = "point" } override var annotation: MKAnnotation? { willSet { clusteringIdentifier = "point" if let mapAnnotation = newValue as? PhotoAnnotation, let url = URL(string: mapAnnotation.imageURL) { self.configure(with: url) } } } override var image: UIImage? { get { return self.imageView.image } set { self.imageView.image = newValue } } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func prepareForReuse() { super.prepareForReuse() } func configure(with imageURL: URL) { let options = ImageLoadingOptions( placeholder: nil, transition: .none ) ****.loadImage(with: imageURL, options: options, into: imageView) } }
Posted Last updated
.
Post not yet marked as solved
1 Replies
472 Views
I use loadFileRepresentation to register video URL. After that, loadItem will take less time to see the video from the picker. But after upgrade Iphone to 16.6, this func can not work. Have any change or dev team removed loadItem it? Here is my sample code: provider.loadItem(forTypeIdentifier: "public.movie", options: nil) { url, error in guard let url = url as? URL else { return } self.parent.selectedVideoURL = url // Check cached, if loadFileRepresentation before use url from loadItem more faster let storage = LocalStorageHelper() if storage.checkStringExistStorage(MEDIA_PICKER_STORAGE_NAMESPACE, url.relativeString) { DispatchQueue.main.async { self.parent.presentationMode.wrappedValue.dismiss() self.parent.videoURL = url } } else { provider.loadFileRepresentation(forTypeIdentifier: "public.movie") { urlResult, error in DispatchQueue.main.async { self.parent.presentationMode.wrappedValue.dismiss() } if let error = error { // Handle errors loading video LOGGING.error("Error loading video: \(error.localizedDescription)") return } guard let urlFile = urlResult else {return} // create a new filename let fileName = "\(Int(Date().timeIntervalSince1970)).\(urlFile.pathExtension)" // create new URL let newUrl = URL(fileURLWithPath: NSTemporaryDirectory() + fileName) // copy item to APP Storage try? FileManager.default.copyItem(at: urlFile, to: newUrl) DispatchQueue.main.async { storage.saveStringToStorage(MEDIA_PICKER_STORAGE_NAMESPACE, url.relativeString) self.parent.videoURL = URL(string: newUrl.absoluteString) } } } }
Posted Last updated
.