gpt4 book ai didi

ios - MKMapSnapshotter 有效,但我无法共享 UIImage

转载 作者:行者123 更新时间:2023-11-28 20:08:17 26 4
gpt4 key购买 nike

我对 MKMapSnapshotter 有疑问。我目前有两个 View ,一个带有 UIButton,显示 UIActivityViewController,另一个带有 MKMapView,显示当前用户位置。 UIActivityViewController 用于共享用户的坐标和从 MKMapView 获取的 UIImage 显示当前位置。

图片是使用 MKMapSnapshotter 拍摄的,代码在 secondViewController.m 中:

- (void)mapViewDidFinishRenderingMap:(MKMapView *)mapView fullyRendered:(BOOL)fullyRendered
{
snapshotOptions = [[MKMapSnapshotOptions alloc] init];
snapshotOptions.region = self.mapView.region;
snapshotOptions.scale = [UIScreen mainScreen].scale;
snapshotOptions.size = self.mapView.frame.size;

snapShotter = [[MKMapSnapshotter alloc] initWithOptions:snapshotOptions];

[snapShotter startWithCompletionHandler:^(MKMapSnapshot *snapshot, NSError *error)
{
snapshotImage = snapshot.image;
data = UIImagePNGRepresentation(snapshotImage);
[data writeToFile:@"SOS_Map.png" atomically:YES];
}];
}

并保存到名为:SOS_Map.png 的文件中,如您所见。问题是,如果我尝试加载 .png 文件,它不会出现在 UIActivityViewController 中,因此不会出现在 Mail/Messages 应用程序中。我确信这张照片确实已被拍摄并且代码有效 [即使我已经使用 NSLogs 对其进行了测试],但我仍然无法加载图像。

这是用于启动 UIActivityViewController、添加文本并在 firstViewController.m 中加载 UIImage 的代码

- (IBAction)shareCoordinates:(id)sender
{
myBundle = [NSBundle mainBundle];
pathToImage = [myBundle pathForResource:@"SOS_Map" ofType:@"png"];

itemsToShare = [NSMutableArray new];
[itemsToShare addObject:[NSString stringWithFormat:@"text]]; //Coordinates
[itemsToShare addObject:[UIImage imageNamed:@"SOS_Map.png"]]; //Picture

itemsToShareLoaded = [NSArray arrayWithArray:itemsToShare];

_activityView = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare
applicationActivities:nil];

[self presentViewController:_activityView animated:YES completion:nil];
}

可能是文件目录的问题?我不知道,你能帮我解决这个问题吗?

最佳答案

您对 -[NSData writeToFile:atomically:] 的调用失败,因为您没有提供可写路径。试试这个:

NSURL *documentsURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] firstObject];
NSURL *imageURL = [documentsURL URLByAppendingPathComponent:@"SOS_Map.png"];
[data writeToURL:imageURL atomically:YES];

然后,加载并分享图片:

NSURL *documentsURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] firstObject];
NSURL *imageURL = [documentsURL URLByAppendingPathComponent:@"SOS_Map.png"];
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:imageURL]];

NSArray *itemsToShare = @[@"text", image];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];

另一个可能更简单的解决方案是将捕获的图像保存在内存中。

关于ios - MKMapSnapshotter 有效,但我无法共享 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21240651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com