Я видел этот формат (изображение, показанное ниже) для опции share в большинстве приложений iOS, поддерживающих iOS 7. Есть ли код/рамки по умолчанию, доступные для реализации этой опции совместного доступа, как показано на рисунке ниже?
Я видел этот формат (изображение, показанное ниже) для опции share в большинстве приложений iOS, поддерживающих iOS 7. Есть ли код/рамки по умолчанию, доступные для реализации этой опции совместного доступа, как показано на рисунке ниже?
То, что вы ищете, это UIActivityViewController
.
Поскольку вы задали общий вопрос, я не могу сделать больше, чем дать ссылку на documentation
В дополнение к принятому ответу небольшой фрагмент кода примера
- (void)shareText:(NSString *)text andImage:(UIImage *)image andUrl:(NSURL *)url
{
NSMutableArray *sharingItems = [NSMutableArray new];
if (text) {
[sharingItems addObject:text];
}
if (image) {
[sharingItems addObject:image];
}
if (url) {
[sharingItems addObject:url];
}
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil];
[self presentViewController:activityController animated:YES completion:nil];
}
Вызовите shareText
, оставьте вещи, которые вы не хотите использовать в nil
.
[self shareText:@"Hello world" andImage:nil andUrl:nil];
Контроллер в размещенном вами изображении - это UIActivitiyViewController это ссылка в документации по классу
какой-нибудь хороший пример кода: Как отобразить таблицу действий с общим доступом iOS 6 с доступными опциями общего доступа?
Я знаю, что этот вопрос относится к iOS 7, а пример кода указывает на iOS 6, но AFAICT они очень похожи, поэтому код примера может быть полезен, как и я.
UIActivityViewController
- это то, что вы ищете.
Вы можете указать элементы или приложения
UIActivityViewController *actCont = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
Просто используйте следующий код для Общий доступ по умолчанию.. Вы можете добавить больше элементов в массив shareItems
в соответствии с вашими требованиями.
NSMutableArray *shareItems = [[NSMutableArray alloc] initWithObjects:
@"Hello",
[UIImage imageNamed:@"your_image.png"],
@"http://google.com/", nil];
[self shareItemToOtherApp:shareItems];
Следующим методом является разделение по умолчанию текста или изображения на другие приложения: -
-(void)shareItemToOtherApp:(NSMutableArray *)shareItems{
UIActivityViewController *shareController = [[UIActivityViewController alloc]
initWithActivityItems: shareItems applicationActivities :nil];
[shareController setValue:@"Sharing" forKey:@"subject"];
shareController.excludedActivityTypes = @[UIActivityTypePostToWeibo, UIActivityTypeAssignToContact, UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeSaveToCameraRoll];
shareController.completionHandler = ^(NSString *activityType, BOOL completed)
{
//NSLog(@" activityType: %@", activityType);
//NSLog(@" completed: %i", completed);
};
[self presentViewController: shareController animated: YES completion: nil];
}
Если вы хотите сделать Индивидуальный общий доступ, используйте следующий код. Для этого вам нужно импортировать фреймворк <Social/Social.h>
.
-(void)shareOnFacebook:(id)sender {
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
{
SLComposeViewController *faceSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
// NSLog(@"%@", messageField.text);//This returns the appropriate string
[faceSheet setInitialText:@"Hellooooooo"];
//The facebook VC appears, but initial text is not set to messageField.text
[self presentViewController:faceSheet animated:YES completion:nil];
}
else
{
NSLog(@"Please first install Application and login in Facebook");
}
}
-(void)shareOnTwitter:(id)sender {
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
SLComposeViewController *tweetSheet = [SLComposeViewController
composeViewControllerForServiceType:SLServiceTypeTwitter];
[tweetSheet setInitialText:@"Hello"];
[self presentViewController:tweetSheet animated:YES completion:nil];
}
else{
NSLog(@"Please first install Application and login in Twitter");
}
}
Надеюсь, это то, что вы ищете. Меня волнует любая забота.:)