我试图UIActivityViewController用一个长NSString的数据作为数据.如果我输入一个> 140个字符的字符串,则其中的推文表格不会显示该字符串.如果我在将字符串提供给控制器之前将UIActivities其截断,则所有字符串都会被截断.我不希望Facebook或消息被截断.
有没有办法给不同的字符串UIActivities?
谢谢!
(例如,Marco Arment的The Magazine应用程序通过截断字符串后跟@TheMagazineApp进行此操作UIActivityPostToTwitter,以及其他内容UIActivities.)
使用Swift作为在iOS 8中运行的应用程序,我需要编写一个完成处理程序,UIActivityViewController以捕获用户选择的"共享"方法的结果.
这是我到目前为止的代码片段.我的问题是如何设置avc.completionWithItemsHandler?我确信它很简单,但我没有看到它.
var activityItems = NSMutableArray()
activityItems.addObject("Email or text for 'share' goes here")
var avc = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
avc.setValue("Subject for Email", forKey: "Subject")
avc.completionWithItemsHandler = //Here is where I dont know what to do.
self.navigationController?.presentViewController(avc, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud) 使用简单的UIActivityViewController
-(void)share{
NSString *textToShare = _mytext;
NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
UIImage *imageToShare = _myimage;
NSArray *activityItems = @[textToShare, url, imageToShare];
UIActivityViewController *activityVC =
[[UIActivityViewController alloc] initWithActivityItems:activityItems
applicationActivities:nil];
[self presentViewController:activityVC animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
我想在适当的时候分享文字,网址和图片.
因此,如果用户选择邮件,则会显示所有内容.与其他应用程序等(pinterest,facebook,twitter)
在Facebook Messenger上 - 如果共享了网址和图像,则共享屏幕崩溃.这是一个已知问题(无法使用网址发送图片)?
我正在尝试将图像保存到Swift 3中的照片库(我正在使用Xcode 8).
ViewController代码:
func shareImage(image: UIImage) {
let items = [image]
var activityVC: UIActivityViewController = UIActivityViewController(activityItems: items, applicationActivities: nil)
let excludeActivities: [UIActivityType] = [UIActivityType.airDrop,
UIActivityType.assignToContact,
UIActivityType.addToReadingList,
UIActivityType.copyToPasteboard]
activityVC.excludedActivityTypes = excludeActivities
self.present(activityVC, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序,然后单击按钮获取屏幕截图(将其转换为图像,......,这一切都完美无缺)时,应用程序要求访问照片库的权限,我点击"确定"按钮,然后应用程序崩溃.图像未保存在照片库中.
我从Xcode获得的唯一线索如下:
2016-09-28 11:24:27.216043 Ajax Kids[4143:1545362] [error] error: -addPersistentStoreWithType:SQLite configuration:(null) URL:file:///var/mobile/Media/PhotoData/Photos.sqlite?readonly_shm=1 options:{
NSPersistentStoreFileProtectionKey = NSFileProtectionCompleteUntilFirstUserAuthentication;
NSReadOnlyPersistentStoreOption = 1;
NSSQLitePersistWALOption = 1;
NSSQLitePragmasOption = {
"journal_mode" = WAL;
};
} ... returned error Error Domain=NSCocoaErrorDomain Code=256 "The file couldn’t be opened." UserInfo={reason=Failed to access …Run Code Online (Sandbox Code Playgroud) iOS13 上的新共享表在其左上角显示了共享项目的预览/缩略图。
当使用 UIActivityViewController 共享 UIImage 时,我希望共享图像的预览/缩略图显示在那里(例如共享附加到内置邮件应用程序的图像时),但共享表显示的是我的应用程序图标。

需要什么代码/设置才能在共享表中显示正在导出的图像的缩略图?
我已经设置了 UIActivityViewController 如下:
let image = UIImage(named: "test")!
let activityVC = UIActivityViewController(activityItems: [image], applicationActivities: nil)
activityVC.popoverPresentationController?.sourceView = self.view
self.present(activityVC, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用UIActivityViewController共享一些项目.在iOS 6上它工作正常.但是当我在iOS 7上测试时,只显示邮件图标.我怀疑我的SDK太旧了,我下载了最新的SDK,但它的行为仍然相同.我在模拟器和安装了facebook的设备上进行了测试,没有运气.
现在我的想法已经用完了我做错了什么.
这是我的代码
- (void)shareButtonWasTapped:(BMPopUpMenuView *)popUpMenu {
NSString *shareText;
if (_correctPatternFound) {
shareText = @"Yey, I solved a puzzle!";
}
else {
shareText = @"I am solving a photzle...";
}
NSURL *shareURL = [NSURL URLWithString:@"http://somewebsite.com"];
NSArray *items = [NSArray arrayWithObjects:
shareText,
_shareImage,
shareURL, nil];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
[activityViewController setValue:shareText forKey:@"subject"];
activityViewController.excludedActivityTypes = @[UIActivityTypeCopyToPasteboard,
UIActivityTypePostToWeibo,
UIActivityTypeSaveToCameraRoll,
UIActivityTypeCopyToPasteboard,
UIActivityTypeMessage,
UIActivityTypeAssignToContact,
UIActivityTypePrint];
[self presentViewController:activityViewController animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用UIActivityItemProvider通过电子邮件附件从我的应用程序内共享文件.我还需要填充电子邮件的主题行,并指定附件的名称与设备上存储的文件名称不同.
这是我正在使用的代码.问题是电子邮件中缺少附件.
@interface ItemProvider:UIActivityItemProvider
@property (nonatomic, strong) NSURL *filepath;
@property (nonatomic, strong) NSString *emailBody;
@property (nonatomic, strong) NSString *emailSubject;
@end
@implementation ItemProvider
- (id)initWithPlaceholderItem:(id)placeholderItem
{
//Initializes and returns a provider object with the specified placeholder data
return [super initWithPlaceholderItem:placeholderItem];
}
- (id)item
{
//Generates and returns the actual data object
return [NSDictionary dictionary];
}
// The following are two methods in the UIActivityItemSource Protocol
// (UIActivityItemProvider conforms to this protocol) - both methods required
#pragma mark UIActivityItemSource
//- Returns the …Run Code Online (Sandbox Code Playgroud) 我正在使用iOS 6的新方式来分享信息:UIActivityViewController.要根据媒体(Facebook,Twitter或邮件)选择共享数据,我的视图控制器实现UIActivityItemSource协议如下:
- (IBAction)onShareButton:(UIButton *)sender
{
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[self] applicationActivities:nil];
activityViewController.excludedActivityTypes = @[UIActivityTypeMessage, UIActivityTypeAssignToContact, UIActivityTypeCopyToPasteboard, UIActivityTypeMessage, UIActivityTypePostToWeibo, UIActivityTypePrint, UIActivityTypeSaveToCameraRoll];
[self presentViewController:activityViewController animated:YES completion:^{}];
}
#pragma mark - UIActivityItemSource Protocol
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType {
if ([activityType isEqualToString:UIActivityTypePostToFacebook]) {
NSArray *items = @[@"message facebook", [NSURL URLWithString:@"http://www.myUrlFacebook.com"]];
return items;
} else if ([activityType isEqualToString:UIActivityTypePostToTwitter]) {
NSArray *items = @[@"message twitter", [NSURL URLWithString:@"http://www.myUrlTwitter.com"]];
return items;
} else if ([activityType isEqualToString:UIActivityTypeMail]) {
NSArray *items = @[@"message …Run Code Online (Sandbox Code Playgroud) 当我使用a时UIActivityViewController,在用户选择活动(例如Mail或Message)后,我无法更改状态栏的文本颜色,也无法更改"取消"和"发送"导航栏按钮的文本/色调颜色.对于条形按钮,在AppDelegate我尝试过使用:
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
Run Code Online (Sandbox Code Playgroud)
没有任何反应.但是我可以用这个设置导航栏标题:
[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor, nil]];
Run Code Online (Sandbox Code Playgroud)
我设置UIViewControllerBasedStatusBarAppearance到NO中Info.plist.并把线:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Run Code Online (Sandbox Code Playgroud)
在AppDelegate,并没有运气改变状态栏颜色.有任何想法吗?
textcolor uinavigationbar tintcolor uiactivityviewcontroller ios7
我通过共享来自其他应用程序的内容看到,当使用共享表共享到Gmail邮件应用程序时,可以设置不同的主题和正文.我已经实现了它,它在本机邮件应用程序上工作正常但不适用于Gmail.
进入Yelp并分享业务然后从共享表中选择gmail,我发现主题和正文是不同的.主题包含业务的地址,而正文包含地址+ Yelp上的业务链接.
我试图在本机邮件应用程序上成功复制此逻辑但不在Gmail应用程序中复制.
我尝试过以下方法:
实现UIActivityItemSource方法
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[self] applicationActivities:nil];
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController {
return @"";
}
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType {
return @"body";
}
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType {
return @"subject";
}
Run Code Online (Sandbox Code Playgroud)
结果
Apple Mail主题设置为"主题",正文设置为"正文"
Gmail主题设置为"正文",正文设置为"正文"
- (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType
Run Code Online (Sandbox Code Playgroud)
共享到Gmail应用时从不调用.
然后我尝试更多的黑客方式
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[@"body"] applicationActivities:nil];
[activityViewController setValue:@"subject" forKey:@"subject"];
Run Code Online (Sandbox Code Playgroud)
结果
Apple Mail主题设置为"主题",正文设置为"正文"
Gmail主题设置为"正文",正文设置为"正文"
任何让Gmail表现得像Apple Mail的方式?
我再次看到,Yelp和Safari等其他应用程序通过共享表从Gmail应用程序中获得了正确的行为.任何建议将不胜感激,谢谢.