Я видел этот формат (изображение показано ниже) опции совместного использования в большинстве приложений iOS, поддерживающих iOS 7. Есть ли код / структура по умолчанию, доступная для реализации этой опции совместного использования, как показано на изображении ниже?
Общий доступ по умолчанию в iOS 7
Ответы (6)
Вы ищете UIActivityViewController
.
Поскольку вы задали общий вопрос, я не могу ничего сделать, кроме как дать вам ссылку на документация
В дополнение к принятому ответу небольшой фрагмент кода примера
- (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 this это ссылка на документацию по классу
хороший пример кода: Как отобразить лист действий по предоставлению общего доступа в 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];
}
Если вы хотите создать лист Custom Sharing, используйте следующий код. Для этого вам нужно импортировать <Social/Social.h>
framework.
-(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");
}
}
Надеюсь, это то, что вы ищете. Любые опасения вернутся ко мне. :)