我已添加此代码用于呈现UIActivityViewController:
-(IBAction)activityAction:(id)sender
{
UIActivityViewController *activityViewController = [[UIActivityViewController alloc]initWithActivityItems:[NSArray arrayWithObjects:@"Hello Welcome!",[UIImage imageNamed:@"scene3.jpg"],nil] applicationActivities:nil];
activityViewController.excludedActivityTypes = @[UIActivityTypePostToFacebook, UIActivityTypePostToTwitter, UIActivityTypePostToWeibo, UIActivityTypeAssignToContact];
[self presentViewController:activityViewController animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
iOS7中没有显示Facebook,Twitter和微博图标.在iOS6中,所有图标都正确显示.请参见下面的截图:

我怎么解决这个问题?
我一直在使用UIPrintInteractionController在我的应用程序中打印图像,并且它工作得很好,因为我可以自定义页面,以便以适当的边距打印.
我正在尝试使用UIActivityViewController来做同样的事情,但是我遇到了一个块 - 每当我在activityItems中传入UIImage时,打印活动就变得可用,但是当它打印时没有利润,我不知道如何定制它.我试图使用UIMarkupTextPrintFormatter,然后它将图像打印出两页并且它的尺寸过大,因此部分图像被切断了页面.当我以NSData对象的形式传入图像时,UIPrintInteractionController似乎适当地调整了它的大小.
这是我试图在activityItems中传递的内容:
NSString *markupText = [NSString stringWithFormat:@"<html><body><img src='%@'></body></html>",self.imgURL]; //imgURL is the url of the image on the internet
UIMarkupTextPrintFormatter *htmlPrintF = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText:markupText];
htmlPrintF.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins
htmlPrintF.maximumContentWidth = 6 * 72.0;
Run Code Online (Sandbox Code Playgroud)
理想情况下,我不想传递图像URL,因为下载图像时已经下载并显示一次图像需要花费时间,并保留在UIImage对象中.上面的代码为我提供了适当的边距,但图片的大小不合适,无法放在页面上.
回到使用UIPrintInteractionController并抛弃UIActivityViewController会更容易,但我希望在UIActivityViewController中将所有内容放在一个地方.
有关如何在使用UIActivityViewController时控制边距/图像大小的任何想法?
我正在使用UIActivityViewController将我的应用程序中的信息共享到Twitter和FB,这些信息已在"设置"中正确配置.代码是最简单的:
- (IBAction)share {
NSString *postText = @"some text";
UIImage *postImage = [UIImage imageNamed:@"myImage"];
NSURL *postURL = [NSURL URLWithString:@"myUrl"];
NSArray *activityItems = @[postText, postImage, postURL];
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
activityController.excludedActivityTypes =
@[
UIActivityTypePrint,
UIActivityTypeCopyToPasteboard,
UIActivityTypeAssignToContact,
UIActivityTypeSaveToCameraRoll,
UIActivityTypeCopyToPasteboard,
UIActivityTypeMail,
UIActivityTypeMessage,
UIActivityTypePostToWeibo,
];
[activityController setCompletionHandler:^(NSString *activityType, BOOL completed) {
if ([activityType isEqualToString:UIActivityTypePostToFacebook]) {
if (completed) [self doSomethingForFB];
} else if ([activityType isEqualToString:UIActivityTypePostToTwitter]) {
if (completed) [self doSomethingForTwitter];
}
}];
[self presentViewController:activityController animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
这段代码就像模拟器上的魅力(iphone和ipad,ios7和ios6),但在我的设备(带iOS7的iPad)上,当ActivityViewController出现时,Twitter和FB就在那里,因为标签是可见的,但是他们的图标不见了.
我正在使用UIActivityItemProvider子类来提供自定义数据.但有时获取数据失败,我不想提供活动(例如消息编写器).尝试[self cancel]并return nil;在item方法中,但消息编写器仍然显示(带有空消息).
我正在为iPad构建一篇文章阅读应用程序.我已经集成了社交共享功能,这意味着用户可以在Facebook和谷歌邮件上分享文章.我正在UIActivityViewController用于分享.
有一个条形按钮项,当用户点击打开UIActivityViewController时.我更新了Xcode 6当我在模拟器上运行它运行正常但我在iOS 7的真实设备(iPad)上运行,应用程序在点击栏按钮项时崩溃.这是我的代码:
- (IBAction)ysshareAction:(id)sender
{
NSURL *linkURL = [NSURL URLWithString:_DetailModal1[4]];//article url
NSMutableAttributedString *stringText = [[NSMutableAttributedString alloc] initWithString:_DetailModal1[0]];//_DetailModal1[0] contain article title////
[stringText addAttribute:NSLinkAttributeName value:linkURL range:NSMakeRange(0, stringText.length)];
NSArray * itemsArray = @[[NSString stringWithFormat:@"%@",_DetailModal1[0]], [NSURL URLWithString:_DetailModal1[4]]];
NSArray * applicationActivities = nil;
UIActivityViewController * AVC = [[UIActivityViewController alloc] initWithActivityItems:itemsArray applicationActivities:applicationActivities];
AVC.popoverPresentationController.sourceView = _webView;
[self presentViewController:AVC animated:YES completion:nil];
[AVC setCompletionHandler:^(NSString *act, BOOL done)
{
if([act isEqualToString:UIActivityTypeMail]) {
ServiceMsg = @"Mail sent!";
} else if([act isEqualToString:UIActivityTypePostToTwitter]) {
ServiceMsg = @"Article …Run Code Online (Sandbox Code Playgroud) objective-c ipad uipopovercontroller ios uiactivityviewcontroller
我正在使用Google的Gmail Share Extension.我提供的实施:
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType;
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController;
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType;
Run Code Online (Sandbox Code Playgroud)
对于Mail客户端(来自Apple),它将进入下面的委托方法,但Gmail
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType;
Run Code Online (Sandbox Code Playgroud)
相反,它显示主题与正文相同.我想知道如何为Gmail共享选项设置与正文文本不同的主题.
我无法理解UIActivityViewController调用后如何执行操作.例如,当我使用以下代码保存图像时:
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
let activity = UIActivityViewController(activityItems: [image], applicationActivities: nil)
presentViewController(activity, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
用户收到新窗口,可以在某处保存图像.成功保存图像后,我想执行一些操作(例如跳转到根视图控制器).但我无法弄清楚如何追踪这UIActivityViewController是关闭的.如果我在这个块之后编写代码,没有任何反应,正如我所理解的那样,因为这个代码是在活动VC中实现的,而不是在原始VC中实现的.
我认为这viewWillDisappear对我有帮助,但是它跟踪了原来的VC,我称之为活动VC,我无法弄清楚如何跟踪活动VC.与此同时,即使我有能力追踪此事件,仍然存在一个问题:除了取消之外,我怎么能有所不同?
我正在开发一个应用程序,并希望使用uiactivityviewcontroller共享保存到我的文档目录中的图像视频和其他文件.图像和文件共享工作正常.图像共享代码
var textToShare : Any!
textToShare = UIImage(data:data)//data of an image
Run Code Online (Sandbox Code Playgroud)
存储在文档目录中的其他文件的代码.
var textToShare : Any!
textToShare = url//url of file saved into document directory
Run Code Online (Sandbox Code Playgroud)
但我不知道如何分享视频.在此之后,我使用以下代码来使用activityviewcontroller.
let activityViewController = UIActivityViewController(activityItems: [textToShare], applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view // so that iPads won't crash
// exclude some activity types from the list (optional)
activityViewController.excludedActivityTypes = [ UIActivityType.airDrop, UIActivityType.postToFacebook ]
// present the view controller
self.present(activityViewController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud) 我遇到了大多数人在试图UIActivityViewController在iPad上呈现时所面临的情况; 它崩溃了:
Terminating app due to uncaught exception 'NSGenericException', reason: 'UIPopoverPresentationController (<_UIAlertControllerActionSheetRegularPresentationController: 0x7fc4f2d87d00>) should have a non-nil sourceView or barButtonItem set before the presentation occurs.
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
- (void)shareLeaflet
{
NSString *forwardedString = [[NSString alloc] initWithFormat:@"Check out this leaflet\n\n %@ \n\nself.theURLToShare];
UIActivityViewController *activityViewController = nil;
if (IDIOM == IPAD)
{
NSLog(@"iPad");
activityViewController.popoverPresentationController.sourceView = self.view;
// activityViewController.popoverPresentationController.sourceRect = self.frame;
[self presentViewController:activityViewController
animated:YES
completion:nil];
}
else
{
NSLog(@"iPhone");
activityViewController = [[UIActivityViewController alloc] initWithActivityItems:[NSArray arrayWithObjects:forwardedString, nil] applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];
} …Run Code Online (Sandbox Code Playgroud) 当用户仅从iOS 11中的活动控制器中选择"复制"时,该URL将重复.它在iOS 10上正常运行
使用以下代码
@IBAction func shareButtonPressed() {
guard let url = URL(string: "http://google.com") else { return }
let shareText = "Share Text!"
let items: [Any] = [shareText, url]
let activityViewController = UIActivityViewController(activityItems: items, applicationActivities: nil)
present(activityViewController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
将共享文本提供为:
Share Text!
http://google.comhttp://google.com
Run Code Online (Sandbox Code Playgroud) ios ×6
objective-c ×4
ipad ×2
swift ×2
facebook ×1
ios11 ×1
ios7 ×1
iphone ×1
nsoperation ×1
swift3 ×1
twitter ×1
uiactivity ×1
uiimage ×1
uiwebview ×1