C# IOS 14请求有限照片访问
我试图使用PHPickerController和access PHAsset来获取文件名和文件大小,但PHAsset为空C# IOS 14请求有限照片访问,c#,ios,.net,xamarin,C#,Ios,.net,Xamarin,我试图使用PHPickerController和access PHAsset来获取文件名和文件大小,但PHAsset为空 var config=new PHPickerConfiguration(PHPhotoLibrary.SharedPhotoLibrary){ 过滤器=PHPickerFilter.ImagesFilter, SelectionLimit=1 }; var picker=新的PHPickerViewController(配置){ ModalPresentationStyle
var config=new PHPickerConfiguration(PHPhotoLibrary.SharedPhotoLibrary){
过滤器=PHPickerFilter.ImagesFilter,
SelectionLimit=1
};
var picker=新的PHPickerViewController(配置){
ModalPresentationStyle=UIModalPresentationStyle.Popover,
委派=新的ImagePickerDelegate((文件大小、文件名、url)=>{
})
};
ViewController.PresentViewController(选择器,true,null);
公共类ImagePickerDelegate:phPickerViewController Delegate
{
公共图像PickerDelegate(操作)
{
行动=行动;
}
公共行动行动{get;}
公共重写void DidFinishPicking(PHPickerViewController选择器,PHPickerResult[]结果)
{
picker.DismissViewController(true,null);
foreach(结果中的var结果)
{
var asset=PHAsset.FetchAssets(result.AssetIdentifier,null)?.firstObject作为PHAsset;
//资产为空
var fileSize=asset.ValueForKey((NSString)“fileSize”);
}
}
}
正如您在图像中看到的,请求对话框的显示和代码不会在下面的行中暂停
var asset=PHAsset.FetchAssets(result.AssetIdentifier,null)?.firstObject作为PHAsset
并返回null您可以使用方法获取PHAsset对象,然后它将返回值
示例代码如下:
public override void DidFinishPicking(PHPickerViewController picker, PHPickerResult[] results)
{
picker.DismissViewController(true, null);
foreach (var result in results)
{
var refID = result.AssetIdentifier;
string[] refIDs = new string[] { refID };
var asset = PHAsset.FetchAssetsUsingLocalIdentifiers(refIDs, null)?.firstObject as PHAsset;
// var fileSize = asset.ValueForKey((NSString)"fileSize");
}
}
也可以看看这个